我有两个ObservableCollections,比如ObservableCollection<Cat>
和ObservableCollections<Dog>
。猫和狗都来自班级宠物。我想显示所有宠物的列表。我该怎么做呢?我更喜欢不想通过添加来自两个源列表中的项目来创建新的ObservableCollection<Pet>
,因为随着更多Cats和Dogs添加到源列表中,此列表将变得陈旧。我可以想到两种方法:如何在WPF中将两个ObservableCollections显示为单个列表?
1)创建一个“装饰器”ObservableCollection
,它将两个源集合保持为成员并每次迭代它们。
2)创建一个ObservableCollection<Pet>
,它具有两个源集合的组合元素,但也依赖于源集合。因此,如果将Cat添加到Cat集合中,则会通知此集合,并将新的Cat添加到其自身。
有没有解决这个问题的标准方法?我不想重新发明轮子!
非常好!正是我在找什么。谢谢。 – Naresh 2010-06-18 13:49:48
好吧,我一直在努力使CompositeCollection现在工作几个小时,但不能让它工作。我将其指定为的ItemSource到我的组合框像这样(猫是我的ViewModel一个ObservableCollection): CompositeCollection> 但我得到此错误: 找不到管理目标元素的FrameworkElement或FrameworkContentElement。 BindingExpression:路径=猫;的DataItem = NULL; 如果我完全删除CompositeCollection并直接绑定到ObservableCollection,那么一切正常。任何线索? –
Naresh
2010-06-19 03:00:24
这里的答案显示了如何绑定来自XAML的CompositeCollection:http://stackoverflow.com/questions/6446699/how-do-you-bind-a-collectioncontainer-to-a-collection-in-a-view-model – Govert 2013-01-18 16:36:03