2010-05-22 4 views
1

간단한 Silverlight 질문 : ObservableCollection <Myview> 내 viewmodel 있습니다. 모든 MyObject에는 Label 속성이 있습니다. ListBox를 컬렉션에 바인딩하고 DisplayMemberPath를 Label로 설정하거나 Label에 Text 속성을 바인딩하는 TextBlock으로 ItemTemplate을 설정하면 모두 예상대로 작동합니다.ObservableCollection of UserControls에 바인딩

MyObject가 UserControl에서 파생되도록 MyObject를 변경하면 Label 텍스트가 더 이상 ListBox에 표시되지 않습니다. 각 항목은 몇 픽셀 높이의 빈 스트립으로 표시됩니다. 왜 이런거야? 여기에 다른 것들이 렌더링되는 방법에 대해 내가 누락 된 것이 분명합니다.

답변

2

ListBox는 ItemsSource에있는 항목 집합이 이미 UIElement 개의 인스턴스라고 판단하므로 해당 요소를 직접 만든 ListBoxItem 요소의 콘텐츠로 사용하기로 결정합니다.

+0

감사합니다. XAML에 대해 저를 좌절시키는 것은 이런 종류의 것입니다. 콘텐츠를 특정 방식으로 렌더링하는 데 매우 구체적인 지침을 제공 할 수 있으며이를 완전히 무시할 수 있습니다! – nlawalker

+0

nlawalker : 그들은이 시나리오를 예상하지 않았거나이 시나리오에서 일하는 비용이 노력을 기울이지 않는다고 느꼈을 것입니다. 결국 UIElements 세트를 가져 와서 데이터로 취급하는 것은 이상합니다. – AnthonyWJones

1

this post에 대한 대답에서 설명한대로 IsItemItsOwnContainerOverride를 재정 의하여 고유 한 ItemsControl을 만들어이 동작을 변경할 수 있습니다.

관련 문제