Любая идея о том, как сортировать CompositeCollection?

У меня есть CompositeCollection, которая состоит из ObservableCollections двух типов: компании и контакты. У контакта есть свойство FullName, в то время как у компании есть имя свойства.

Я хочу применить сортировку, чтобы коллекции были смешаны по типам, но отсортированы по имени, например:

Ицхак Перлман
Джон Доу
Microsoft
Сара Мур
Переполнение стека
Уолтер Ричардсон

Обратите внимание, что я связал ItemsControl с CollectionViewSource, для его Source установлен CompositeCollection, его представление становится CompositeCollectionView, это внутренний тип, если я явно устанавливаю его тип в ListCollectionView, он содержит только CollectionContainers в качестве своих элементов.

Желаемое решение - это обходной путь для включения сортировки, фильтрации и группировки в CompositeCollections, я не хочу переопределять и создавать свою собственную CompositeCollection, я просто не знаю, как я могу переопределить это и включить его функциональность в xaml.

2 ответа

Решение

Кто сказал, что я должен воспользоваться преимуществом "CompositeCollection"?
Я решил не использовать CompositeCollection.
Я просто создаю ObservableCollection (объекта), смешанного из двух типов, и привязываю к нему CollectionViewSource.

Обновить

Унаследовав CompositeCollection и внедрив IBindingList сортировка может быть включена.

Можно использовать IComparable и интерфейс для объекта, который будет добавлен в коллекцию. Тогда можно отсортировать по

 IComparable getName()  // this should return company/employee name

в методе сравнения вы можете отсортировать согласно вашему требованию

Другие вопросы по тегам