2009-06-28 4 views
0

IEnumerable ItemsSource DependencyProperty를 노출하는 wpf 사용자 정의 컨트롤이 있습니다. 내 UserControl ListBox 컨트롤에이 속성을 바인딩합니다.CompositeCollection 내 WPF UserControl 작동 방법

나는 CompositeCollection이 주어 졌을 때 내 사용자 컨트롤이 어떻게 작동하는지 알고 싶습니다. 현재 내가 이렇게 내 컨트롤을 사용하고 있습니다 :

<my:uc> 
    <my:uc.ItemsSource> 
    <CompositeCollection> 
     <CollectionContainer Collection="{My Binding}"></CollectionContainer> 
     <CollectionContainer Collection="{My Binding}"></CollectionContainer> 
    </CompositeCollection> 
    </my:uc.ItemsSource> 
</my:uc> 

나는이 목록 상자에서이 CollectionContainers의 내용을 표시하고 싶지만, 지금의이 용기를 열거하지. 내 목록 상자에 표시된 유일한 항목은 두 개의 "System.Data.CollectionContainer"항목입니다.

[b] 편집 : [/ b] XAML 디자이너가 "속성 'ItemsSource'가 'CompositeCollection'형식의 값을 지원하지 않는다고 알려줍니다." 나는 이것이 내 문제라고 생각해.하지만 어떻게 내가 "지원"CompositeCollection 만들 수 있습니까?

답변

0

정답은 ItemsControl을 확장하는 클래스를 만드는 것이 었습니다. 컨트롤을 디자인 할 때 XAML을 사용할 수는 없지만 CollectionContainers를 지원하는 특별한 ItemsSource 속성을 제공합니다. 컨트롤의 뷰는 해당 ContentTemplate 속성에 정의해야합니다.

0

나는 여러분이 얻는 것은 기본적으로 형식의 이름을 반환하는 개체의 ToString 메서드라고 생각합니다.

ToString을 재정의하고 목록에 표시하려는 값을 반환 해보십시오.

+0

문제는 CollectionContainer 자체가 렌더링되지 않아야한다는 점입니다. 대신 자식 요소를 제공해야합니다. –