我是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; }
}
正如你在我的类代码中看到的那样,一个对象可以包含无数个嵌套对象,遗憾的是,我不知道如何能够做到这样的事情:
是否可以做这样的事情,如果可以,怎么做?
提前感谢您抽出时间回答我,如果您需要,请随时向我提出更多信息,如果我使用的词语不正确,请不要纠正我。
答案 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);