#wpf #nssortdescriptor #string #icollectionview
#wpf #nssortdescriptor #строка #icollectionview
Вопрос:
В принципе, у меня есть коллекция элементов. Я хочу выполнить сортировку по свойству String. Проблема в том, что любая пустая строка отображается вверху списка, когда я делаю по возрастанию…
ICollectionView view = CollectionViewSource.GetDefaultView(MyCollection);
view.SortDescriptions.Add(new SortDescription("MyProperty", ListSortDirection.Ascending));
Результирующий список:
«» (Строка.Пусто)
«» (Строка.Пусто)
«» (Строка.Пусто)
A
B
C
D
Должен ли я создавать свой собственный класс SortDescription или что-то в этомроде?
Комментарии:
1. Можете ли вы добавить в свой класс другое свойство, которое возвращало бы правильный ключ сортировки?
2. Я действительно не хочу возиться с самим дизайном объекта, более того, я надеялся на решение, которое можно применять повсеместно, поскольку у меня есть много-много типов объектов.
3. @michael: Ну, такого рода проблемы — это именно то, для чего предназначен MVVM. Создайте несколько viewmodels поверх ваших объектов, придайте им необходимые свойства.
4. @Fyodor: За исключением того, что я не хочу сортировать свои элементы в ViewModel. Моя ViewModel не должна заботиться или обслуживать тот конкретный вид, который ее использует. С другой стороны, мой взгляд хочет взять переданную ему коллекцию и отсортировать ее определенным образом.
5. @michael: Такого рода вещи — ЭТО КАК РАЗ работа ViewModel. Хотя я бы точно не стал выполнять саму сортировку в ViewModel. Я бы просто предоставил ключ сортировки как отдельное свойство.