简单的嵌套TreeView Xaml结构?
我正在尝试构建一个包含三层的WPF TreeView
。 CountryReportTitle
是一个字符串属性, CountryReportTitle
是一个集合,都是从我的ViewModel
公开的。 没有定义类层次结构。 这是我正在寻找的结构:
这是我尝试过的Xaml,但是我在运行时在Xaml中遇到exception:
{"Item has already been added. Key in dictionary: 'DataTemplateKey(ISESApp.ViewModels.ReportViewModel)' Key being added: 'DataTemplateKey(ISESApp.ViewModels.ReportViewModel)'"}
XAML:
Local:是我的ViewModel的命名空间:
xmlns:local="clr-namespace:MyApp.ViewModels"
我做错了什么,这个问题的最佳方法是什么?
这是我对树视图的首选示例。
对树中的元素使用HierarchicalDataTemplate
。 请注意,有三个层,每个层都是自己的类型。 这是为了方便起见,但您可以定义一种类型,并为您的树使用一个模板或任何类型的混合。 具有不同类型表示树中的不同内容使得使用模板非常方便。
数据类
public class ViewModel { public ObservableCollection ItemsA { get; set; } public ViewModel() { ItemsA = new ObservableCollection (new[]{ new ItemA{Name = "A one"}, new ItemA{Name = "A Two"}, new ItemA{Name = "A Three"}, }); } } public class ItemA { public ObservableCollection ItemsB { get; set; } public string Name { get; set; } public ItemA() { ItemsB = new ObservableCollection (new[]{ new ItemB{Name = "B one"}, new ItemB{Name = "B Two"}, new ItemB{Name = "B Three"}, }); } } public class ItemB { public ObservableCollection ItemsC { get; set; } public string Name { get; set; } public ItemB() { ItemsC = new ObservableCollection (new[]{ new ItemC{Name = "C one"}, new ItemC{Name = "C Two"}, new ItemC{Name = "C Three"}, }); } } public class ItemC { public string Name { get; set; } }
和UI
为您提供简单的树视图
您需要在TreeView中绑定TreeView资源:
我认为您需要修改项目以将Treeview绑定到ViewModel而不是字符串列表
这是一个很好的例子