使用WPF TreeView创建层次结构



我正在尝试使用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设置为TreeViewItemTemplate,而不是在资源中:

<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>

最新更新