Подтвердить что ты не робот

Сортировка CollectionViewSource с использованием пользовательского IComparer

Я пытаюсь сортировать коллекцию, полученную из CollectionViewSource, которая просто имеет SortDescriptions для сортировки. К сожалению, мне нужно иметь возможность использовать свой собственный IComparer, но я не могу найти способ сделать это. Подумайте о datagrid, и у меня есть собственный алгоритм сортировки нескольких столбцов. Я думаю, что один способ сделать это - использовать коллекцию, реализующую CollectionChanged, которая является дополнительным слоем между CollectionViewSource и моим истинным источником данных, но я бы предпочел бы лучший способ, если у кого есть какие-либо предложения.

4b9b3361

Ответ 1

У Bea Stollnitz есть пользовательский пример сортировки здесь.

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