Любая идея о том, как сортировать CompositeCollection? - PullRequest
1 голос
/ 28 января 2010

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 01 февраля 2010

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

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

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

0 голосов
/ 01 февраля 2010

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

Обновление

Путем наследования CompositeCollection и реализации IBindingList сортировка может быть включена.

...