Как отсортировать наблюдаемую коллекцию? - PullRequest
2 голосов
/ 17 апреля 2011

Я знаю, что есть другие сообщения, подобные этому, но ни один из них не ответил на мой вопрос полностью.

У меня есть несколько различных наблюдаемых коллекций в приложении WPF, над которым я работаю, и мне нужно просто выполнить их сортировку по алфавиту, чтобы они отображались в алфавитном порядке.

Есть ли простой способ сделать это с Linq? Если нет, есть ли другой простой способ сделать это?

Ответы [ 5 ]

2 голосов
/ 17 апреля 2011

Вы можете предоставить свою собственную логику сортировки или использовать свойство дескрипторов сортировки CollectionView для сортировки вашей коллекции.Для начала посмотрите на эти ссылки, они могут помочь - http://bea.stollnitz.com/blog/?p=17 http://www.wpftutorial.net/DataViews.html http://bea.stollnitz.com/blog/?p=24

1 голос
/ 17 апреля 2011

Что приходит на ум:

  1. Сортировка во View, а не в ViewModel
  2. Вытащить в список, отсортировать список, очистить коллекцию, вставить обратно
  3. Custom SortedObservableCollection, но я не уверен, как бы View отреагировал на это.

Не уверен насчет ваших конкретных потребностей.

0 голосов
/ 17 апреля 2011

Вы должны использовать CollectionViewSource вместо ObservableCollection или вы можете обернуть свою коллекцию в CollectionViewSource.

public CollectionViewSource GetSortedView{
   get{
      CollectionViewSource view = new CollectionViewSource(myColl);
      view.SortDescriptors.Add(new SortDescriptor("propertyname"), Ascending);
      return view;
   }
}

Преимущество заключается в том, что если вы связываете это представление с сеткой данных и т. Д., Оно будет показывать знак сортировки столбцов, а также позволит пользователю выполнять дальнейшую сортировку.

0 голосов
/ 17 апреля 2011

Взгляните на это http://mokosh.co.uk/post/2009/08/04/how-to-sort-observablecollection/

Выглядит как простая и понятная реализация.

И если вам нужно использовать просто linq, вы можете использовать метод расширения OrderBy. Больше информации о методе заказа: здесь

0 голосов
/ 17 апреля 2011

Вы можете использовать отсортированную наблюдаемую коллекцию - это коллекция, которая постоянно поддерживает элементы в отсортированном порядке (поэтому вы просто вставляете элемент, и он будет вставлен в правильное место в коллекции).

Существует несколько реализаций - например, эта или эта .

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