如何在WPF中将两个ObservableCollections显示为单个列表?

时间:2010-06-18 13:10:14

标签: wpf merge observablecollection

我有两个ObservableCollections,比如ObservableCollection<Cat>ObservableCollections<Dog>。猫和狗都来自Pet类。我想显示所有宠物的清单。我该怎么做呢?我不想通过添加来自两个源列表的项来创建新的ObservableCollection<Pet>,因为随着更多的Cats和Dogs添加到源列表中,此列表将变得陈旧。我可以想到两种方法:

1)创建一个“装饰器”ObservableCollection,将两个源集合保存为成员,并每次迭代它们。

2)创建一个ObservableCollection<Pet>,它具有两个源集合的组合元素,但也依赖于源集合。因此,如果将Cat添加到Cat集合中,则会通知此集合,并将新Cat添加到自身。

是否有解决此问题的标准方法?我不想重新发明轮子!

1 个答案:

答案 0 :(得分:7)

使用CompositeCollection汇总多个集合和项目,并提供完整的集合更改支持。

编辑CompositeCollection不是依赖项对象,因此没有数据上下文的概念,因此绑定不起作用的原因。如果添加绑定项或集合,则必须从代码后面创建集合。