最简单的方法是使用绑定和
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 DataType="{x:Type my:Item}"
ItemsSource="{Binding Items}">
<TextBlock Text="{Binding Name}"/>
</HierarchicalDataTemplate>
现在你只需要把
ItemsSource
的
TreeView
到顶级项集合,树节点将自动构造。如果需要添加(或删除)节点,只需向父集合添加项(或将其从父集合中删除)。
对于本例,我使用了单个项类型,但是如果您有多个类型要显示在
树视图
您需要定义
层次结构数据模板
为每一个。对于叶节点(没有子节点的节点),可以只使用
DataTemplate