2014-01-07 55 views
0

我有一個WPF TreeView綁定到在其中每個列表中有幾個列表的對象列表。WPF TreeView中的兩個孩子列表

public List<OwnerClass> OwnerClasses {get; set;} 

public class OwnerClass 
{ 
    public List<SomeObject> SomeObjects { get; set; } 
    public List<OtherObject> OtherObjects { get; set; } 
} 

我正在尋找一種方法來顯示兩個列表作爲父項的子項。

像這樣:

> Owner1 
    | 
    + SomeObject 1 
    + SomeObject 2 
    + SomeObject 3 
    + OtherObject 1 
    + OtherObject 2 
    + OtherObject 3 
    + OtherObject 4 

> Owner2 
    | 
    + SomeObject 1 
    + SomeObject 2 
    + SomeObject 3 
    + OtherObject 1 
    + OtherObject 2 
    + OtherObject 3 
    + OtherObject 4 

我想要的樹狀functionallity,但我想通過側孩子列出的一面。 (並且每一個都是樹視圖,因爲它們又有列表。)

這可能嗎?

+2

創建一個合適的ViewModel。將數據以任何格式轉換爲可在「HierarchicalDataTemplate」中使用的內容。 –

回答

0

你也許可以做一個屬性,「連接」的兩個列表成爲一個:

public class OwnerClass 
{ 
    public List<SomeObject> SomeObjects { get; set; } 
    public List<OtherObject> OtherObjects { get; set; } 
    public object AllObjects 
    { 
     get 
     { 
      List<object> list = SomeObjects; 
      list.AddRange(OtherObjects); 
      return list; 
     } 
    } 
} 
0

你需要兩樣東西真的很容易做到這一點。第一個已經被@DLeh很好地證明了,雖然我建議在使用WPF時使用ObservableCollection<T>類而不是List<T>類。

您需要的第二件事是HierarchicalDataTemplate。這就像一個普通的DataTemplate,但它允許您設置一個源子節點:

<HierarchicalDataTemplate DataType="{x:Type YourXmlNamespacePrefix:OwnerClass}" 
    ItemsSource="{Binding AllObjects}"> 
    <TextBlock Text="{Binding SomePropertyFromObject}"/> 
</HierarchicalDataTemplate> 

你可以找到從HierarchicalDataTemplate Class頁面上MSDN更多。