Сортировка ObservableCollection
Предположим, что у меня ObservableCollection
класса employee
public ObservableCollection<Employee> employeeCollection = new ObservableCollection<Employee>();
public class Employee
{
public string FirstName { get; set; }
public string LastName { get; set; }
public double MobileNumber { get; set; }
public string City { get; set; }
public int Age { get; set; }
public Employee() {}
}
теперь я пытаюсь сортировать ObservableCollection
( "employeeCollection" )
путем соответствующего выбора пользователем из combobox [это будет....Sort By FirstName....Sort By MobileNumber и т.д....]..
и требуется получить отсортированную наблюдаемую коллекцию....
Значит, он не должен быть в форме "var", он должен быть
ObservableCollection<Employee>
Поэтому я могу назначить его "ItemsSource"
свойству "ItemsControl"
...
Спасибо......
Ответы
Ответ 1
Вы можете сортировать представление коллекции, а не сортировать коллекцию:
// xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
<myView.Resources>
<CollectionViewSource x:Key="ItemListViewSource" Source="{Binding Itemlist}">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="SortingProperty" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</myView.Resources>
И затем вы можете использовать CollectionViewSource как ItemSource:
ItemsSource="{Binding Source={StaticResource ItemListViewSource}}"
Ответ 2
Я думаю, что у PVitt может быть лучшее решение... однако, я нашел это
Класс SortedObservableCollection, который может помочь?
http://softcollections.codeplex.com/
Ответ 3
Я реализовал ObservableCollectionView
, который поддерживает сортировку и фильтрацию с использованием lambda (например, LINQ, но live) и отслеживания элементов:
https://mytoolkit.codeplex.com/wikipage?title=ObservableCollectionView
Ответ 4
Вам не нужно сортировать себя, но может позволить WPF сделать это за вас. Например, SortDescription.