使用HierarchicalDataTemplate在Silverlight中设置TreeView并使用ItemSource绑定

时间:2011-03-11 18:28:23

标签: silverlight binding treeview hierarchicaldatatemplate itemsource

我正在尝试构建一个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
等等...

就像我说的,我是新手。我也一直在尝试使用本教程:

http://blogs.microsoft.co.il/blogs/davids/archive/2009/06/04/hierarchicaldatatemplate-and-treeview.aspx

但是当我尝试设置另一个HierarchicalDataTemplate时,它表示ItemTemplate被设置了不止一次。我迷路了。


编辑:在网上找到这个链接,它也有帮助......我想......

http://www.codeproject.com/Articles/36451/Organizing-Heterogeneous-Data-on-a-WPF-TreeView.aspx

1 个答案:

答案 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; }
    }