使用WPF TreeView创建层次结构

时间:2015-05-05 22:56:00

标签: c# wpf treeview

我正在尝试使用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只显示没有任何子节点的根节点。

非常感谢任何帮助,谢谢:)

1 个答案:

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