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

标签 wpf merge observablecollection

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

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

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

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

最佳答案

使用 CompositeCollection聚合多个集合和具有完整集合更改支持的项目。

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

关于wpf - 如何在 WPF 中将两个 ObservableCollections 显示为单个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3069837/

相关文章:

c# - 使用 C# 和 Wpf 编辑组合框的子对象

file - 在Mercurial中,如何从命名分支中选择特定文件并与默认文件 merge 回去?

wpf - MVVM:处理集合中模型的逻辑子对象

c# - ObservableCollection.CollectionChanged 未触发

c# - 如何分离 View 数据和 ViewModel 数据?

.net - ListBox 鼠标悬停在背景颜色上

java - 如何使用 mapreduce 合并一些文件?

c - 合并排序不适用于所有情况

c# - 当更新 ObservableCollection 中的项目时更新 ItemsControl

c# - 如何在 WPF 上使用 ICommand 的 CanExecute 方法