C# 具有无限节点的TreeView

C# 具有无限节点的TreeView,c#,wpf,xaml,treeview,C#,Wpf,Xaml,Treeview,我想让treeview拥有无限的节点。我有两个树的viewmodel: public class GroupViewModel { public GroupViewModel() { } public string GroupName { get; set; } public ObservableCollection<TagViewModel> Tags { get; set; } public ObservableCollecti

我想让treeview拥有无限的节点。我有两个树的viewmodel:

public class GroupViewModel
{
    public GroupViewModel()
    {
    }

    public string GroupName { get; set; }

    public ObservableCollection<TagViewModel> Tags { get; set; }
    public ObservableCollection<GroupViewModel> Groups { get; set; }
}
我的XAML:

<HierarchicalDataTemplate DataType="{x:Type ViewModel:GroupViewModel}" ItemsSource="{Binding Path=Tags}">
    <TextBlock Text="{Binding Path=GroupName}" />
    </HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type ViewModel:TagViewModel}">
    <StackPanel HorizontalAlignment="Left" Orientation="Horizontal">
        <CheckBox />
        <TextBlock Text="{Binding Path=TagName}" Margin="5,0,0,0" />
    </StackPanel>
</HierarchicalDataTemplate>

TreeView Name="groupsTreeView"></TreeView>

TreeView Name=“groupsTreeView”>

ItemsSource=“{Binding Path=Tags}”

我有带标签的一级组

ItemsSource=“{Binding Path=Groups}”

我有带子组的组-没有标记


如何使用组和标记创建树?

每个树节点只能使用一个集合作为其子节点的项源。 您至少有两个选项可以在单个集合中组合组和标记:

  • 将ViewModel更改为在单个ObservableCollection中包含组和标记
  • 在XAML中使用组合键组合两个集合
<HierarchicalDataTemplate DataType="{x:Type ViewModel:GroupViewModel}" ItemsSource="{Binding Path=Tags}">
    <TextBlock Text="{Binding Path=GroupName}" />
    </HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type ViewModel:TagViewModel}">
    <StackPanel HorizontalAlignment="Left" Orientation="Horizontal">
        <CheckBox />
        <TextBlock Text="{Binding Path=TagName}" Margin="5,0,0,0" />
    </StackPanel>
</HierarchicalDataTemplate>

TreeView Name="groupsTreeView"></TreeView>