2010-12-15 2 views
2

IList를 계층 적 디스플레이의 WPF TreeView에 바인딩하려고합니다. 여기에 내 물건이 있습니다 :WPF - Generic.List 바인딩에 대한 XAML Treeview

나는 얼마나 많은 어린이에게 특정 물체가 있는지 알지 못하고 아이들도 아이들을 가질 수 있습니다.

내 HierarchialDataTemplate 주변에 안달하지만, 성공되고 있지 않다 :

<TreeView Canvas.Left="263" Canvas.Top="12" Height="200" Name="TeamTreeView" Width="120"> 
     <TreeView.Resources> 
      <HierarchicalDataTemplate DataType="{x:Type local:TeamsTreeViewItem}" ItemsSource="{Binding DisplayValue}" > 
       <TextBlock Text="{Binding DisplayValue}"/> 
      </HierarchicalDataTemplate> 
      <HierarchicalDataTemplate DataType="{x:Type local:TeamsTreeViewItem}" ItemsSource="{Binding Children}" > 
       <TextBlock Text="{Binding DisplayValue}"/> 
      </HierarchicalDataTemplate> 
     </TreeView.Resources> 
    </TreeView> 

어떤 제안?

+0

모든 노드가 TeamsTreeViewItem이므로 하나의 HierarchicalDataTemplate 만 가져야합니다. 그렇지 않으면 WPF는 사용할 수있는 방법을 어떻게 알 수 있습니까? ItemsSource를 Children 컬렉션에 바인딩해야합니다 : ItemsSource = "{Binding Path = Children}" – markmnl

답변

1

당신과 같이 아이들에 ItemsSource를 적용해야합니다

<HierarchicalDataTemplate DataType="{x:Type local:TeamsTreeViewItem}" ItemsSource="{Binding Path=Children}"> 
    <TextBlock Text="{Binding DisplayValue}"/> 
</HierarchicalDataTemplate> 

내가 데이터 형식에 따라이 DataTemplate을 적용, 그 방법은 아이들이 동일한 유형 (TeamsTreeViewItem)의 경우 자동으로 적용해야한다 그것이 아이, 손자, 또는 위대한 위대한 .... 손자 일지라도 그 유형을 발견하는 모든 항목에 적용됩니다. TeamsTreeViewItem이 정의 된 네임 스페이스 (여기서는 "로컬"이라고 함)를 포함해야합니다.