Сортировка CollectionViewSource с использованием пользовательского IComparer - PullRequest
13 голосов
/ 12 июня 2009

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

1 Ответ

15 голосов
/ 12 июня 2009

У Bea Stollnitz есть собственный пример сортировки здесь .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...