在WPF中构建树视图
我正在尝试在WPF中构建一个三级树视图。基本上,我有一个顶级项目列表,所有这些项目都有一个子项目。这些子项可能有也可能没有自己的chid项在WPF中构建树视图,wpf,treeview,Wpf,Treeview,我正在尝试在WPF中构建一个三级树视图。基本上,我有一个顶级项目列表,所有这些项目都有一个子项目。这些子项可能有也可能没有自己的chid项 有人知道网上有教程吗?这个例子可能就是你需要的: 此示例可能正是您所需要的: 最简单的方法是使用绑定和HierarchycalDataTemplate。使用您的数据声明一个类: class Item : INotifyPropertyChanged { public Item() { this.Children = new O
有人知道网上有教程吗?这个例子可能就是你需要的:
此示例可能正是您所需要的:
最简单的方法是使用绑定和
HierarchycalDataTemplate
。使用您的数据声明一个类:
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; }
}
现在,您只需将TreeView
的ItemsSource
绑定到顶级项目集合,树节点将自动构建。如果需要添加(或删除)节点,只需将项目添加到父集合(或从父集合中删除)
在本例中,我使用了单个项目类型,但如果在
TreeView
中显示多个类型,则需要为每个类型定义一个hierarchycaldatatemplate
。对于叶节点(没有子节点的节点),只需使用常规的数据模板
最简单的方法是使用绑定和层次数据模板
。使用您的数据声明一个类:
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; }
}
现在,您只需将TreeView
的ItemsSource
绑定到顶级项目集合,树节点将自动构建。如果需要添加(或删除)节点,只需将项目添加到父集合(或从父集合中删除)
在本例中,我使用了单个项目类型,但如果在
TreeView
中显示多个类型,则需要为每个类型定义一个hierarchycaldatatemplate
。对于叶节点(没有子节点的节点),您可以只使用常规的数据模板
解决您的问题可能有点晚,但是遇到相同问题的人。
我发现WPF有一个非常好的免费控件:
有了好的文档..解决您的问题可能有点晚了,但是有人遇到了同样的问题。 我发现WPF有一个非常好的免费控件:
有了一个好的文档..如果您忽略了我没有声明数据类型并且该头似乎不存在的事实,那么我就能够使它与具有多个类型的不同对象一起工作。显示的日期具有相同的属性名称,因此可以正常工作。这可能不是最好的方式,但由于显示必须简单,我现在将这样做。确实,我的代码中有一个错误,Header属性不存在。。。现在已经修复了,如果您忽略了我没有声明数据类型,并且该头似乎不存在的事实,那么我可以使它与具有多个类型的不同对象一起工作。显示的日期具有相同的属性名称,因此可以正常工作。这可能不是最好的方式,但由于显示必须简单,我现在将这样做。确实,我的代码中有一个错误,Header属性不存在。。。现在已经修好了我知道这已经4年了但值得一提的是。。。阿门。网络上的WPF教程非常复杂。我走得越远,看到的越多,我不认为写教程的人中有一半真的知道他们在做什么。WPF中的事情不必那么复杂…我知道这已经4年了,但值得一提的是。。。阿门。网络上的WPF教程非常复杂。我走得越远,看到的越多,我不认为写教程的人中有一半真的知道他们在做什么。WPF中的事情不必那么复杂。。。