treeview datatemplate中的无限嵌套对象

时间:2016-06-09 11:39:07

标签: c# wpf treeview

我是databinding和datatemplate的新手,我实际上遇到了一个问题,因为我想绑定一个对象,该对象可以包含来自同一个类的ObservableCollection对象。

这是实际的XAML代码:

<TreeView.ItemTemplate>
    <HierarchicalDataTemplate ItemsSource="{Binding Node}">
        <TextBlock Text="{Binding Name}" />
            <HierarchicalDataTemplate.ItemTemplate>
                 <HierarchicalDataTemplate ItemsSource="{Binding SubNode}">
                     <TextBlock Text="{Binding Name}" />
            </HierarchicalDataTemplate>
        </HierarchicalDataTemplate.ItemTemplate>
    </HierarchicalDataTemplate>
</TreeView.ItemTemplate>

类代码:

public class Node
{
    public Node(string name)
    {
        Name = name;
        Subnodes = new ObservableCollection<Node>();
    }

    public string Name { get; private set; }

    public ObservableCollection<Node> Subnodes { get; private set; }
}

正如你在我的类代码中看到的那样,一个对象可以包含无数个嵌套对象,遗憾的是,我不知道如何能够做到这样的事情:

Sample

是否可以做这样的事情,如果可以,怎么做?

提前感谢您抽出时间回答我,如果您需要,请随时向我提出更多信息,如果我使用的词语不正确,请不要纠正我。

1 个答案:

答案 0 :(得分:1)

模板更简单,实际上

<TreeView.ItemTemplate>
    <HierarchicalDataTemplate ItemsSource="{Binding Path=Subnodes}">
        <TextBlock Text="{Binding Path=Name}" />
    </HierarchicalDataTemplate>
</TreeView.ItemTemplate>

请勿忘记设置或绑定TreeView.ItemsSource

当节点添加到自己的子节点

时,TreeView确实变得无限
var root = new Node("A");
root.Subnodes.Add(root);