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

Nar*_*esh 4 wpf merge observablecollection

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

1)创建一个"装饰器" ObservableCollection,将两个源集合保持为成员,并每次迭代它们.

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

有没有一种标准的方法可以解决这个问题?我不想重新发明轮子!

Jul*_*ain 7

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

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