我之前没有使用过TreeView,而只是在一些教程中使用它们来获取它们。我以为我有,但事实证明我没有。
我正在尝试将TreeView绑定到一个对象。
对象是
public List<MyGrandparents> MyGrandParents {get;set;}
在MyGrandParent类中,有一个属性
public List<MyParents> MyParents{get;set;}
最后,在MyParent类中有一个属性
public List<MyChildren> MyChildren {get;set;}
在每个类中,还有其他属性,例如Name(没有基类,但在此阶段没有共享代码)
我想将这个地块绑定到树视图,所以在“根”级别我只看到祖父母。我可以扩大祖父母只看父母,我也可以扩展他们看孩子。
我遇到的问题只是最高级别是绑定(祖父级别)。我的XAML是
<TreeView ItemsSource="{Binding MyGrandParents}">
<TreeView.Resources>
<DataTemplate DataType="{x:Type local:MyGrandParent}">
<TextBlock Text="{Binding Name}" Margin="0,0,10,0" />
</DataTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:MyParent}" ItemsSource="{Binding MyGrandParents}">
<TextBlock Text="Don't bind to test"></TextBlock>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
我迷失了为什么这不具约束力给我一棵好树。
答案 0 :(得分:3)
您没有按照正确的模式使用HierarchicalDataTemplate
。
可能contain children
的项目应声明为HierarchicalDataTemplate
,ItemsSource
设置为child collection
,以便在其下方展示。
并且item not containing any child
应该声明为DataTemplate
。
应该是这样的 -
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:MyGrandParent}"
ItemsSource="{Binding MyParents}">
<TextBlock Text="{Binding Name}" Margin="0,0,10,0" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:MyParent}"
ItemsSource="{Binding MyChildren}">
<TextBlock Text="Don't bind to test"></TextBlock>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type local:MyChildren}">
<TextBlock Text="Don't bind to test"></TextBlock>
</DataTemplate>
</TreeView.Resources>