var description = new ColumnSortDescription("LastName", ListSortDirection.Ascending);
DataGrid.SortDescriptions.Add(description);
このトピックでは、XamDataGrid コントロールによって実装できる並べ替えの動作を分かりやすく説明し、簡単に理解できるようにします。
このトピックには、以下のセクションがあります。
本トピックの理解を深めるために、以下のトピックを参照することをお勧めします。
XamDataGrid コントロールを使用すると、 Column のレコードを並べ替えることができます。残りの列の関連コンテンツは、それに伴って並べ替えられ、これらの並べ替えられたレコードの集計が XamDataGrid コントロールの UI に表示されます。並べ替えは、ローカルおよびリモートのデータ ソースに実装できます。詳細については、以下のトピックを参照してください。
次の手順では、並べ替えを実装する方法を紹介します。
XamDataGrid コントロールをデータにバインドします。
ColumnSortDescription クラスの新しいインスタンスを作成し、そのパラメーターを並べ替える Column の PropertyPath
として、また使用する ListSortDirection として渡します(昇順または降順)。
ColumnSortDescription
オブジェクトを XamDataGrid コントロールの ColumnSortDescriptionCollection コレクションに追加します。
ColumnSortDescription オブジェクトは、XamDataGrid コントロールに対して、レコードの並べ替える方法を指定するために使用します。各 ColumnSortDescription
は、単一の並べ替え動作を行います(「LastName」 Column を昇順で並べ替えるなど)。複数の ColumnSortDescription
オブジェクトを XamDataGrid コントロールに同時に割り当て、より複雑な並べ替え動作ができます(詳細は、「複数列のレコードの並べ替えの例」を参照してください)。
XamDataGrid コントロールは、 ColumnSortDescription
オブジェクトがある場合、それを ColumnSortDescriptionCollection コレクション内で反復することによって、並べ替える方法を決定します。 ColumnSortDescription
オブジェクトがない場合、XamDataGrid コントロールは基本の ItemsSource の元のレコードの順序を維持します。
ColumnSortDescription
オブジェクトは、各レコードが並べ替えられる XamDataGrid コントロールの ItemsSource にプロパティが割り当てられ(たとえば、 Column に割り当てられるパブリック プロパティ)、並べ替えの方向を示す ColumnSortDescription
が列レコードに適用されます(昇順または降順)。
次の例では、基本的な並べ替えの動作を実装する方法を紹介します。このシナリオでは、XamDataGrid コントロールが、3 つの Column(FirstName、LastName、および Territory)を含むデータにバインドされ、LastName Column に昇順の並べ替え動作が適用されます。
このコード スニペットは、LastName Column PropertyPath
で ColumnSortDescription クラスのインスタンスを作成し、ListSortDirection 列挙型を使用して昇順の並べ替えで渡します。SortDescriptions プロパティを使用して XamDataGrid コントロールの ColumnSortDescription オブジェクトを ColumnSortDescriptionCollection コレクションに追加します。
C# の場合:
var description = new ColumnSortDescription("LastName", ListSortDirection.Ascending);
DataGrid.SortDescriptions.Add(description);
次のスクリーンショットは、結果の並べ替え動作を示しています。LastName Column 内のレコードが昇順で並べ替えられ、他の関連するレコードもすべてそれに伴って並べ替えられていることを確認してください。
複数の ColumnSortDescription オブジェクトを同時に XamDataGrid コントロールに適用できます。このような状況では、XamDataGrid コントロールは、割り当てられた ColumnSortDescriptionCollection の同期操作を実行し、並べ替え条件を満足させます。この処理の場合、XamDataGrid コントロールが ColumnSortDescriptionCollection
コレクション内を反復して、コレクション内に存在する順序に基づき、各 ColumnSortDescription
の並べ替え動作の優先順を決定します(item[0] を最初に実行、item[1] を 2 番目に実行など)。この方法により、複数列の並べ替えが可能になります。データはグループで並べ替えられ、グループ自体も並べ替えられます。
次の例で、複数の並べ替え動作を説明します。
このシナリオでは、2 つの ColumnSortDescription
オブジェクトが XamDataGrid コントロールに適用されます。最初の ColumnSortDescription
は Territory Column をターゲットにして昇順で並べ替えます。2 つ目は LastName Column
をターゲットにして、同様に昇順で並べ替えます。この組み合わせの ColumnSortDescription
オブジェクトを使用することによって、擬似グループ化の動作が行われます。指定された領域に割り当てられた個人の名前が領域でグループ化され (昇順で並べ替えたリスト)、個人の各グループも昇順でリスト化されます。
C# の場合:
var sorting1 = new ColumnSortDescription("Territory", ListSortDirection.Ascending);
var sorting2 = new ColumnSortDescription("LastName", ListSortDirection.Ascending);
DataGrid.SortDescriptions.Add(sorting1);
DataGrid.SortDescriptions.Add(sorting2);
次のスクリーンショットは、Territory 列と LastName 列に適用した並べ替え動作の結果を示しています。
Territory Column が最初に昇順で並べ替えられ、次に LastName 列も昇順で並べ替えられていることに注意してください。XamDataGrid コントロールがこれらの並べ替え操作を同期するため、両方の条件が満たされます( ColumnSortDescription が実行された順序が、それらの優先順位を示しています)。このようにして、領域に割り当てられたすべてのデータ項目が領域によってグループ化され、項目の各グループも昇順で並べ替えらえます。
以下の表は、このトピックに関連するトピックを示します。