.net - 如何使用数据绑定(bind)在 WPF 中创建无限深度的 TreeView?

标签 .net wpf xaml treeview hierarchicaldatatemplate

我需要创建一个具有无限父子层次结构的 TreeView。 TreeView 需要绑定(bind)到名为 ResourceList 的列表,并从名为 Children 的列表中提取其子资源。所有项目都是同一类型。

这是我目前拥有的 XAML 代码:

    <TreeView ItemsSource="{Binding ResourceList}" Grid.Column="0" Grid.Row="2" x:Name="ResourcesTree" SelectedItemChanged="ResourcesTree_OnSelectedItemChanged" Margin="0,4,0,0">
        <TreeView.ItemTemplate>
            <HierarchicalDataTemplate ItemsSource="{Binding Children}">
                <TextBlock Text="{Binding Name}" />
                <HierarchicalDataTemplate.ItemTemplate>
                    <HierarchicalDataTemplate ItemsSource="{Binding Children}">
                        <TextBlock Text="{Binding Name}" />
                        <HierarchicalDataTemplate.ItemTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding Name}" />
                            </DataTemplate>
                        </HierarchicalDataTemplate.ItemTemplate>
                    </HierarchicalDataTemplate>
                </HierarchicalDataTemplate.ItemTemplate>
            </HierarchicalDataTemplate>
        </TreeView.ItemTemplate>
    </TreeView>

它有效,但问题是,它只深入了三个层次。我应该更改什么以使其无限?

以防万一,我使用 C# 和 .NET 作为代码隐藏。

最佳答案

你的 Treeview 应该是这样的:

<TreeView ItemsSource="{Binding ResourceList}" Grid.Column="0" Grid.Row="2" x:Name="ResourcesTree" SelectedItemChanged="ResourcesTree_OnSelectedItemChanged" Margin="0,4,0,0">
        <TreeView.ItemTemplate>
            <HierarchicalDataTemplate DataType="{x:Type childType}" ItemsSource="{Binding Children}">
                <TextBlock Text="{Binding Name}" />
            </HierachicalDataTemplate>
        </TreeView.ItemTemplate>
</TreeView>

注意 childType 应该是你的树由什么类组成。

重要的部分是 DataType="{x:Type childType}",它确保所有子级(和孙级等)都使用此数据模板,并处理它的层次结构方面你

关于.net - 如何使用数据绑定(bind)在 WPF 中创建无限深度的 TreeView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36342062/

相关文章:

.net - C++/CLI .NET 可以使用资源 .resx 文件进行本地化吗?

wpf - ReactiveUI 生产准备好了吗?

c# - WPF 数据网格中的内存泄漏问题

wpf - 如何查看 WinDbg 中 DependencyProperty 的值?

c# - 选择后 ContextMenu 不会消失。

xaml - ListView SelectedItem 与 Xamarin 表单和 ReactiveUI 问题绑定(bind)

.net - 3D 世界中最通用的轴方向是什么?

.net - 在 winform 应用程序中模拟 ajax 加载器

.net - 如何使用dotnet仅对jpg文件中的图像数据进行哈希处理?

c# - WPF 和 FontAwesome 连字符图标问题