我需要创建一个具有无限父子层次结构的 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/