Я пытаюсь сортировать коллекцию, полученную из CollectionViewSource, которая просто имеет SortDescriptions для сортировки. К сожалению, мне нужно иметь возможность использовать свой собственный IComparer, но я не могу найти способ сделать это. Подумайте о datagrid, и у меня есть собственный алгоритм сортировки нескольких столбцов. Я думаю, что один способ сделать это - использовать коллекцию, реализующую CollectionChanged, которая является дополнительным слоем между CollectionViewSource и моим истинным источником данных, но я бы предпочел бы лучший способ, если у кого есть какие-либо предложения.
Сортировка CollectionViewSource с использованием пользовательского IComparer
Ответ 1
У Bea Stollnitz есть пользовательский пример сортировки здесь.
Ключевым моментом этой статьи является привязка реализации CollectionViewSource
к IList
, а не более слабый интерфейс ICollection
или IEnumerable
. При этом свойство View
возвращает экземпляр ListCollectionView
вместо CollectionView
. Затем вы можете использовать ListCollectionView.CustomSort
для назначения IComparer
для вашей пользовательской сортировки. Чтобы упростить задачу, вы можете дополнительно использовать Comparer<T>.Create
для использования делегата Comparison
вместо целого класса.