我正在尝试在WPF中构建三级树视图。基本上,我有一个顶级项目列表,所有项目都有一个子项目。这些儿童用品可能有也可能没有自己的chid物品。
任何人都知道网上提供的教程吗?
答案 0 :(得分:4)
最简单的方法是使用绑定和HierarchicalDataTemplate
。用您的数据声明一个类:
class Item : INotifyPropertyChanged
{
public Item()
{
this.Children = new ObservableCollection<Item>();
}
public event PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
var handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}
private string _name;
public string Name
{
get { return _name; }
set
{
_name = value;
OnPropertyChanged("Name");
}
}
public ObservableCollection<Item> Children { get; private set; }
}
为此类型定义HierarchicalDataTemplate
:
<HierarchicalDataTemplate DataType="{x:Type my:Item}"
ItemsSource="{Binding Items}">
<TextBlock Text="{Binding Name}"/>
</HierarchicalDataTemplate>
现在,您只需将ItemsSource
的{{1}}绑定到顶级项目集合,即可自动构建树节点。如果您需要添加(或删除)节点,只需在父集合中添加项目(或从中删除)
对于此示例,我使用了单个项目类型,但如果您要在TreeView
中显示多种类型,则需要为每个类型定义TreeView
。对于叶节点(没有子节点的节点),您可以使用常规HierarchicalDataTemplate
答案 1 :(得分:2)
答案 2 :(得分:0)
对你的问题可能有点晚了,但遇到了同样问题的人。 我找到了一个非常好的WPF免费控制:DW.WPFToolkit 有良好的文档..