我有两个ObservableCollections,比如ObservableCollection<Cat>
和ObservableCollections<Dog>
。猫和狗都来自Pet类。我想显示所有宠物的清单。我该怎么做呢?我不想通过添加来自两个源列表的项来创建新的ObservableCollection<Pet>
,因为随着更多的Cats和Dogs添加到源列表中,此列表将变得陈旧。我可以想到两种方法:
1)创建一个“装饰器”ObservableCollection
,将两个源集合保存为成员,并每次迭代它们。
2)创建一个ObservableCollection<Pet>
,它具有两个源集合的组合元素,但也依赖于源集合。因此,如果将Cat添加到Cat集合中,则会通知此集合,并将新Cat添加到自身。
是否有解决此问题的标准方法?我不想重新发明轮子!
答案 0 :(得分:7)
使用CompositeCollection汇总多个集合和项目,并提供完整的集合更改支持。
编辑:CompositeCollection
不是依赖项对象,因此没有数据上下文的概念,因此绑定不起作用的原因。如果添加绑定项或集合,则必须从代码后面创建集合。