对绑定到ObservableCollection的列表框进行排序

mic*_*ael 0 sorting wpf binding observablecollection itemssource

如何对列表框内容进行排序?在我看来,将它保留在UI层更有意义,因为排序不会影响我的业务逻辑,所以它可能在xaml或代码隐藏中.我无法弄明白该怎么做.

H.B*_*.B. 7

你会想要使用CollectionView它.

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

要在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">
Run Code Online (Sandbox Code Playgroud)