Пользовательская логика сортировки для групп с использованием CollectionViewSource - PullRequest
4 голосов
/ 11 мая 2010

У меня есть список «вещей», которые необходимо отфильтровать, затем отобразить сгруппированным и отсортированным способом. Данные, необходимые для расчета порядка группировки и сортировки, недоступны в виде простых свойств - необходимо выполнить некоторую работу в коде для расчета порядка и групп.

CollectionViewSource позволяет мне определять собственный фильтр и логику сортировки - пока все хорошо. Это также позволяет мне привязывать GroupDescription к конвертеру значений, чтобы я мог генерировать имена групп.

Последнее, что я хочу сделать, это контролировать порядок появления сгенерированных групп, и это причиняет мне боль!

Все, что я вижу о CollectionViewSource.SortDescription , говорит, что оно будет сортировать группы по свойству имени, но у меня нет свойства для сортировки. SortDescription нельзя привязать к конвертеру значений, как это делает GroupDescription, и у меня нет других идей.

Итак - как реализовать собственную логику сортировки групп CollectionViewSource?

1 Ответ

6 голосов
/ 11 мая 2010

Этот пост в блоге Bea Stollnitz демонстрирует, как вы можете это сделать. Сначала вам нужно отсортировать по критериям вашей группировки. Даже если это не конкретное свойство, должна быть возможность сортировать ваши элементы, используя ту же логику, которую вы используете для их группировки, не так ли ?! Конечно, это невозможно при использовании экземпляра SortDescription, но вместо этого можно использовать свойство ListCollectionView.CustomSort и указать соответствующую реализацию IComparer.

...