2010-12-06 63 views
2

我想使用HierarchicalDataTemplate(s)绑定到WPF TreeView复杂的数据结构。数据集合作为MyObject的IList存储在我的ViewModel中 - MyObject有几个属性,其中几个属性是他们自己认为的列表。WPF TreeView,实体框架和HierarchicalDataTemplate与嵌套的子列表

我试图实现输出的线沿线的东西:

+ 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> 

不过,我似乎无法得到复合材料收集我见过提到工作了几个地方 -

回答

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:{结合}(直接结合到DataContext)
    • 的TreeViewItem:List2CollectionType
      • 的ItemsSource:{结合}

你”为MyObjectWrapper,List1CollectionType和List2C需要一个DataTemplate ollectionType。

+0

你能否澄清`Target`指的是什么?感谢您的重访。 – Rachael 2013-03-11 21:42:27