TreeView使用分层数据模板绑定到不同的集合

时间:2010-02-17 11:34:14

标签: wpf templates treeview viewmodel hierarchy

我正在使用带有分层数据模板的TreeView绑定到View Model层次结构,我的问题是我有多个不同类型的子集合(虽然相同的基类)。似乎使用模板绑定其中一个集合相对简单,但我很难弄清楚如何做到这两个。

class ParentViewModel 
{ 
  List<FooViewModel> FooCollection {get; set;}
  List<BarViewModel> BarCollection {get; set;}
}

这是我想要实现的目标,但想知道是否有一种简单的方法可以实现:

http://www.codeplex.com/ComplexDataTemplates

2 个答案:

答案 0 :(得分:2)

我无从知晓。当我需要这样做时,我已经向ViewModel添加了另一个属性,名为“Children”,它将两个集合聚合为一个:

public IEnumerable<ViewModel> Children
{
    get
    {
        foreach (FooViewModel foo in FooCollection) yield return foo;
        foreach (BarViewModel bar in FooCollection) yield return bar;
    }
}

答案 1 :(得分:0)

如果您的不同集合仅在根节点上,则只需添加多个树视图,并将每个根绑定到不同的集合。

Alternativeley你可以在HierarchicalDataTemplate中添加多个树视图,并为每个树视图指定单独的绑定。

我不确定这是否会对您的具体情况有所帮助,但就个人而言,我正在使用菜单系统的树视图,它与不同的菜单选项绑定。