Любая идея о том, как сортировать 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
в методе сравнения вы можете отсортировать согласно вашему требованию