方法: ビュー内のデータの並べ替え

この例では、ビュー内のデータを並べ替える方法について説明します。

次の例では、簡単な ListBoxButton を作成します。

<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 に項目を追加すると、ListBoxItemCollection に項目が追加され、ItemCollectionCollectionView クラスから派生しているため、これを行うことができます。 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 でビューを使用してデータの並べ替えおよびグループ化を行う」を参照してください。

関連項目