如何:在视图中对数据进行排序
此示例介绍如何对视图中的数据进行排序。
示例
以下示例创建一个简单的 ListBox 和一个 Button:
<Window x:Class="ListBoxSort_snip.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ListBoxSort_snip" Height="300" Width="300">
<DockPanel>
<ListBox Name="myListBox" DockPanel.Dock="Top">
<ListBoxItem>my</ListBoxItem>
<!--Or you can set the content this way:-->
<!--<ListBoxItem Content="my"/>-->
<ListBoxItem>1</ListBoxItem>
<ListBoxItem>Sort</ListBoxItem>
<ListBoxItem>3</ListBoxItem>
<ListBoxItem>ListBox</ListBoxItem>
<ListBoxItem>2</ListBoxItem>
</ListBox>
<Button Click="OnClick" Width="30" Height="20" DockPanel.Dock="Top">Sort</Button>
</DockPanel>
</Window>
按钮的 Click 事件处理程序包含按降序对 ListBox 中的项进行排序的逻辑。 你可以执行此操作,因为以这种方式将项添加到 ListBox 会将它们添加到 ListBox 的 ItemCollection,而 ItemCollection 派生自 CollectionView 类。 如果使用 ItemsSource 属性将 ListBox 绑定到集合,则可以使用相同的技术进行排序。
private void OnClick(object sender, RoutedEventArgs e)
{
myListBox.Items.SortDescriptions.Add(
new SortDescription("Content", ListSortDirection.Descending));
}
Private Sub OnClick(ByVal sender As Object, ByVal e As RoutedEventArgs)
myListBox.Items.SortDescriptions.Add(New SortDescription("Content", ListSortDirection.Descending))
End Sub
只要有对视图对象的引用,就可以使用相同的技术对其他集合视图的内容进行排序。 有关如何获取视图的示例,请参阅获取数据收集的默认视图。 有关另一个示例,请参阅在单击标题时对 GridView 列进行排序。 有关视图的详细信息,请参阅数据绑定概述中的“绑定到集合”。
有关如何在 Extensible Application Markup Language (XAML) 中应用排序逻辑的示例,请参阅在 XAML 中使用视图对数据进行排序和分组。