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; }
}
3条答案
按热度按时间q5iwbnjs1#
最简单的方法是使用bindings和
HierarchicalDataTemplate
,用你的数据声明一个类:并为该类型定义一个
HierarchicalDataTemplate
:现在只需要将
TreeView
的ItemsSource
绑定到顶层项的集合,树节点将自动构造,如果需要添加(或删除)节点,只需将项添加到父集合(或从父集合中删除对于本例,我使用了单个项目类型,但是如果您有多个类型要在
TreeView
中显示,则需要为每个类型定义一个HierarchicalDataTemplate
,对于叶节点(没有子节点的节点),可以只使用常规的DataTemplate
wgxvkvu92#
这个例子可能就是你所需要的:http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx
djp7away3#
也许有点晚了你的问题,但有人谁是运行到同样的问题。我发现了一个非常好的免费控制WPF:DW.WPFToolkit具有良好的文档。