我正在尝试使用WPF TreeView在我的应用程序中创建层次结构,我正在尝试按如下方式创建层次结构:
Obj A
-Obj B
--Obj C
---Obj D
----Obj E
---Obj D
----Obj E
本质上,上层次结构中具有不同字母的每个对象都是不同类型的对象,它们都从一个抽象类继承以共享公共属性。
这些常见属性之一是包含该特定节点的子节点的List。
浏览了一些在线教程和论坛后,我在使用HierarchicalDataTemplate 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>
在上面的例子中,“Nodes”是一个ObservableCollection,它包含在MainWindow.cs中声明的所有节点
使用此XAML只显示没有任何子节点的根节点。
非常感谢任何帮助,谢谢:)
答案 0 :(得分:0)
ItemsSource
中的HierarchicalDataTemplate
错误,您应该绑定到Children
,而不是Children.Name
:
... ItemsSource="{Binding Children}"
此外,您应将HierarchicalDataTemplate
设置为TreeView
&#39; 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>