我正在尝试构建一个TreeView并让它像这个链接一样设置:
Silverlight vs WPF - Treeview with HierarchialDataTemplate
作为对第一个实际答案的评论,海报说他们是如何解决的,但他们没有提供代码,我理解他们所说的但是我对此很陌生并且无法做到正确。我与实体和组具有相同的设置结构。我想知道是否有人可以解释xaml最终看起来像什么。我假设他们创建了一个新的节点类,这意味着他们创建了一个基本上包含组列表的类。像
这样的东西class groupHolder
{
public List<Group> myGroups {get;set;}
public groupHolder() { myGroups = new List<Group>(); }
}
我只想尝试三个层次:
第1组
- - - - AnotherGroup1
- - - - - - - - entity1
- - - - - - - - entity2
- - - - AnotherGroup2
- - - - - - - - entity1
第2组
- - - - 实体1
- - - - 实体2
- - - - AnotherGroup1
- - - - - - - - entity1
- - - - - - - - entity2
- - - - AnotherGroup2
- - - - - - - - entity1
等等...
就像我说的,我是新手。我也一直在尝试使用本教程:
但是当我尝试设置另一个HierarchicalDataTemplate时,它表示ItemTemplate被设置了不止一次。我迷路了。
编辑:在网上找到这个链接,它也有帮助......我想......
http://www.codeproject.com/Articles/36451/Organizing-Heterogeneous-Data-on-a-WPF-TreeView.aspx
答案 0 :(得分:4)
我能够重新创建该结构:
的TreeView:
<sdk:TreeView Grid.Row="2"
ItemTemplate="{StaticResource GroupTemplate}"
ItemsSource="{Binding Path=Groups}">
</sdk:TreeView>
模板:
<UserControl.Resources>
<common:HierarchicalDataTemplate x:Key="EntryTemplate">
<TextBlock Text="{Binding Path=Name}" />
</common:HierarchicalDataTemplate>
<common:HierarchicalDataTemplate x:Key="SubGroupTemplate"
ItemsSource="{Binding Path=Entries}"
ItemTemplate="{StaticResource EntryTemplate}">
<TextBlock Text="{Binding Path=Name}" />
</common:HierarchicalDataTemplate>
<common:HierarchicalDataTemplate x:Key="GroupTemplate"
ItemsSource="{Binding Path=SubGroups}"
ItemTemplate="{StaticResource SubGroupTemplate}">
<TextBlock Text="{Binding Path=Name}" />
</common:HierarchicalDataTemplate>
</UserControl.Resources>
在ViewModel中我有:
public List<Group> Groups { get; set; }
休息:
public class Group
{
public int Key { get; set; }
public string Name { get; set; }
public List<Group> SubGroups { get; set; }
public List<Entry> Entries { get; set; }
}
public class Entry
{
public int Key { get; set; }
public string Name { get; set; }
}