具有嵌套子列表的WPF TreeView,实体框架和HierarchicalDataTemplate

时间:2010-12-06 13:31:58

标签: wpf frameworks treeview entity hierarchicaldatatemplate

我正在尝试使用HierarchicalDataTemplate将复杂数据结构绑定到WPF TreeView。数据集合作为MyObject的IList存储在我的ViewModel中 - MyObject有几个属性,其中几个属于自己的列表。

我想要实现的输出是:

+ MyObject 1 <br>
  + List1 <br>
    - List 1 Object 1 <br>
    - List 1 Object 2 <br>
  + List2 <br>
    - List 2 Object 1 <br>
    - List 2 Object 2 <br>
+ MyObject 2 <br>
  + List1 <br>
    - List 1 Object 1 <br>
    - List 1 Object 2 <br>
  + List2 <br>
    - List 2 Object 1 <br>
    - List 2 Object 2 <br>

然而,我似乎无法获得我见过的几个地方的复合收藏品 -

1 个答案:

答案 0 :(得分:3)

我刚刚做了类似的事情。遗憾的是,您无法直接执行此操作,因为TreeViewItem仅接受其ItemsSource的一个集合。

我所做的是创建一个以TreeView所需方式公开内容的模型。

public class MyObjectWrapper
{
  public MyObject Target {get;set;}
  public IEnumerable MyLists
  {
    get
    {
      yield return Target.List1;
      yield return Target.List2;
    } 
  }
}

其中MyObject定义为:

public class MyObject
{
    public List1CollectionType List1 {get;private set;}
    public List2CollectionType List2 {get;private set;}
}

您的绑定是

  • TreeViewItem:MyObjectWrapper
    • ItemsSource:MyLists
    • TreeViewItem:List1CollectionType
      • ItemsSource:{Binding}(直接绑定到datacontext)
    • TreeViewItem:List2CollectionType
      • ItemsSource:{Binding}

你需要一个用于MyObjectWrapper,List1CollectionType和List2CollectionType的DataTemplate。