我正在尝试使用wpf treeview在我的应用程序中创建层次结构,我尝试创建一个层次结构,如下所示:
Obj A
-Obj B
--Obj C
---Obj D
----Obj E
---Obj D
----Obj E
本质上,上面的层次结构中的每个对象都带有不同的字母类型的对象,所有对象都从抽象类中继承以共享共同属性。
这些常见属性之一是包含该特定节点的孩子的列表。
浏览了一些在线教程和论坛后,我在使用ercharchicaldatatemplate XAML属性中创建层次结构时遇到了一些困难。
目前我正在使用以下XAML:
<TreeView x:Name="treeviewProjectStructure" Grid.Row="1" Margin="2" SelectedItemChanged="treeviewProjectStructure_SelectedItemChanged" ItemsSource="{Binding Nodes}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:Node}" ItemsSource="{Binding Children.Name}">
<TextBlock Text="{Binding Name}"></TextBlock>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
在上面的示例中,"节点"是一个观察力截面,可容纳在mainwindow.cs
中声明的所有节点使用此XAML简单显示根节点,而没有任何孩子节点。
任何帮助将不胜感激,谢谢:)
您的HierarchicalDataTemplate
中的ItemsSource
是错误的,您应该绑定到Children
,而不是Children.Name
:
... ItemsSource="{Binding Children}"
另外,您应该将HierarchicalDataTemplate
设置为TreeView
的ItemTemplate
,而不是在资源中:
<TreeView x:Name="treeviewProjectStructure" Grid.Row="1" Margin="2" SelectedItemChanged="treeviewProjectStructure_SelectedItemChanged" ItemsSource="{Binding Nodes}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:Node}" ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}"></TextBlock>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>