Сортировка списка, привязанного к коллекции ObservableCollection - PullRequest
0 голосов
/ 25 апреля 2011

Как можно сортировать содержимое списка? Мне кажется, что было бы более целесообразно хранить это только на уровне пользовательского интерфейса, поскольку сортировка не повлияет на мою бизнес-логику, поэтому она, вероятно, идет в xaml или code-behind. Хотя я не могу понять, что именно делать.

1 Ответ

7 голосов
/ 25 апреля 2011

Вы можете использовать для этого CollectionView.

private void Button1_Click(object sender, RoutedEventArgs e)
{
    ICollectionView view = CollectionViewSource.GetDefaultView(SomeCollection);
    view.SortDescriptions.Add
    (
        new SortDescription("Name", ListSortDirection.Descending)
    );
}

Для сортировки в XAML вы можете использовать класс CollectionViewSource; Пример из MSDN:

<src:Places x:Key="places"/>

<CollectionViewSource Source="{StaticResource places}" x:Key="cvs">
  <CollectionViewSource.SortDescriptions>
    <scm:SortDescription PropertyName="CityName"/>
  </CollectionViewSource.SortDescriptions>
  <CollectionViewSource.GroupDescriptions>
    <dat:PropertyGroupDescription PropertyName="State"/>
  </CollectionViewSource.GroupDescriptions>
</CollectionViewSource>

<ListBox ItemsSource="{Binding Source={StaticResource cvs}}"
         DisplayMemberPath="CityName" Name="lb">
...