【发布时间】:2011-08-04 19:26:52
【问题描述】:
我正在尝试在 WPF 中构建一个三层树视图。基本上,我有一个顶级项目列表,它们都有一个子项目。这些子项可能有也可能没有自己的子项。
谁知道网上的教程?
【问题讨论】:
我正在尝试在 WPF 中构建一个三层树视图。基本上,我有一个顶级项目列表,它们都有一个子项目。这些子项可能有也可能没有自己的子项。
谁知道网上的教程?
【问题讨论】:
最简单的方法是使用绑定和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>
现在您只需将TreeView 的ItemsSource 绑定到您的顶级项目集合,树节点将自动构建。如果您需要添加(或删除)一个节点,只需将一个项目添加到(或从中删除)父集合
对于本示例,我使用了单个项目类型,但如果您在 TreeView 中显示多个类型,则需要为每个类型定义一个 HierarchicalDataTemplate。对于叶节点(没有子节点),您可以使用常规的DataTemplate
【讨论】:
【讨论】:
你的问题可能有点晚了,但有人遇到了同样的问题。 我为 WPF 找到了一个非常好的免费控件:DW.WPFToolkit 有一个很好的文档..
【讨论】: