递归地向树状网格视图添加深度的方法

Method of recursively adding depth into a tree grid view

所以现在我有一个树状网格视图,最多有 3 级扩展,因为我在另一个数据模板中手动编写了一个嵌套的分层数据模板,我想知道是否有自动添加的方法每当我的 collection 深入扩展时,就可以深入我的树状网格视图。我的项目源也是一个嵌套的 observable collection,其中有分支。

我正在寻找一种递归添加级别而不是手动将它们嵌套在一起的方法。

谢谢。

HierarchicalDataTemplate 应该为您做到这一点。你只需要在TreeViewDataTemplate.

中定义一次

我认为我们只需要将 HierachicalDataTemplateItemsSource 绑定到您的 class 的嵌套 属性 中,它会处理其余部分。

如果我误解了您的意图,请告诉我。

这是我的尝试:

XAML

<TreeView ItemsSource="{Binding Branches}">
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding Branches}">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                </Grid.ColumnDefinitions>
                <TextBox Grid.Column="0" Text="{Binding Id}"></TextBox>
                <TextBox Grid.Column="1" Text="{Binding Name}"></TextBox>
            </Grid>
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>

具有嵌套集合的 class

public class Branch
{
    public string Id { get; set; }
    public string Name { get; set; }
    public ObservableCollection<Branch> Branches { get; set; }
}

用于测试目的的主窗体硬编码值

public partial class MainWindow : Window
{
    public Branch Branch { get; set; }

    public MainWindow()
    {
        Branch = new Branch()
        {
            Id = "1",
            Name = "A",
            Branches = new ObservableCollection<Branch>()
            {
                new Branch()
                {
                    Id = "2",
                    Name = "B",
                    Branches = new ObservableCollection<Branch>()
                    {
                        new Branch()
                        {
                            Id = "3",
                            Name = "C",
                        },
                        new Branch()
                        {
                            Id = "3",
                            Name = "C",
                            Branches = new ObservableCollection<Branch>()
                            {
                                new Branch()
                                {
                                    Id = "3",
                                    Name = "C",
                                },
                                new Branch()
                                {
                                    Id = "3",
                                    Name = "C",
                                }
                            }
                        }
                    }
                },
                new Branch()
                {
                    Id = "2",
                    Name = "B",
                    Branches = new ObservableCollection<Branch>()
                    {
                        new Branch()
                        {
                            Id = "3",
                            Name = "C",
                        }
                    }
                }
            }
        };

        InitializeComponent();
        this.DataContext = this.Branch;
    }
}

结果