Как отобразить две ObservableCollections как один список в WPF? - PullRequest
4 голосов
/ 18 июня 2010

У меня есть две ObservableCollections, скажем, ObservableCollection<Cat> и ObservableCollections<Dog>.Кошка и собака оба происходят от класса домашних животных.Я хочу отобразить список всех домашних животных.Как мне это сделать?Я предпочитаю не хотеть создавать новый ObservableCollection<Pet>, добавляя элементы из двух исходных списков, потому что этот список станет устаревшим, так как все больше Кошек и Собак будут добавлены в исходные списки.Я могу думать о двух подходах:

1) Создать «Декоратор» ObservableCollection, который сохраняет две исходные коллекции в качестве членов и выполняет итерации по ним каждый раз.

2) Создайте ObservableCollection<Pet> у которого есть объединенные элементы двух исходных коллекций, но также зависит от исходных коллекций.Таким образом, если Cat добавляется в коллекцию Cat, эта коллекция уведомляется и добавляет нового Cat к себе.

Существует ли стандартный способ решения этой проблемы?Я не хочу изобретать велосипед!

1 Ответ

7 голосов
/ 18 июня 2010

Используйте CompositeCollection для объединения нескольких коллекций и элементов с полной поддержкой изменения коллекции.

Редактировать : CompositeCollection не является объектом зависимости, поэтомуПонятие контекста данных, следовательно, почему привязка не работает.Вы должны создать коллекцию из кода, если добавляете связанные элементы или коллекции.

...