2010-12-06 58 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