2014-01-07 27 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更多。