![xamDataPresenter About Grouping 01.png](images/xamDataPresenter_About_Grouping_01.png)
DataPresenter コントロールのグループ化機能では、エンド ユーザーが、同じ値を含むフィールドに基づいてレコードをグループ化できます。DataPresenter コントロールはエンドユーザーがレコードをグループ化するために 2 つの異なる方法も提供します。
デフォルトの動作によって、エンドユーザーは複数のフィールド レイアウトから group-by 領域にフィールド ヘッダーをドラッグできます。
2 つ目のオプションは group-by 領域の下にあるデフォルトのレイアウトに各フィールドのボタンを表示します。エンドユーザーはデフォルトのフィールド レイアウトでレコードをグループ化するためにこれらのボタンを group-by 領域にドラッグできます。このオプションによってエンドユーザーは複数のフィールド レイアウトでフィールドを使用してレコードをグループ化することができません。このオプションは以前のリリースとの後方互換性をサポートするために利用できます。
コントロールとその group-by 設定にかかわらず、コードまたは XAML でレコードをグループ化できます。このため、DataPresenter コントロールでフィールド ヘッダーを表示していない時でさえレコードをグループ化するための固有のユーザー インターフェイスを提供できます。
3 つのコントロールはすべて group-by 機能の修正を可能にする以下のプロパティを公開します。
GroupByAreaMode - このプロパティは 3 つの個別の目的に役立ちます。
主要な目的は、複数のフィールド レイアウトからフィールドを使用してエンドユーザーがレコードをグループ化できるかどうかを決定することです。たとえば、Customer および Order データ項目のネストされた階層がある場合、このプロパティはエンドユーザーが Customer データ項目と Order データ項目をグループ化できるかどうかを決定します。
2 番目の目的は、複数のフィールド レイアウトのグループ化を有効にする時に group-by 領域がどのくらいの領域を使用するかを決定します。MultipleFieldLayoutsCompact 設定を使用する場合、コントロールは group-by 領域に一行で group-by の基準を表示します。ただし、MultipleFieldLayoutsFull 設定で、DataPresenter コントロールは group-by 領域に個別の行でそれぞれの一意のフィールド レイアウトを表示します。
3 番目の目的はレコードのグループ化に使用できる 2 つの異なるユーザー インターフェイス間を切り替えることです。グループ化の有効化をデフォルトのフィールド レイアウトに限定する場合(DefaultFieldLayoutOnly)、group-by 領域はデフォルトのフィールド レイアウトにフィールドのボタンを表示します。そうでない場合、エンドユーザーはフィールド ヘッダーを複数のフィールド レイアウトから group-by 領域にドラッグできます。
GroupByArea - 外部の group-by 領域を DataPresenter コントロールに添付する、または GroupByArea コントロールのプロパティを修正するためにこのプロパティを GroupByArea コントロールに設定できます。この group-by 領域はデフォルトのフィールド レイアウトでフィールドでグループすることのみを可能にします。DataPresenter コントロールは、GroupByAreaMode プロパティを DefaultFieldLayoutOnly に設定する時に GroupByArea コントロールのみを使用します。
GroupByAreaMulti - 外部の group-by 領域を DataPresenter コントロールに添付する、または GroupByAreaMulti コントロールのプロパティを修正するためにこのプロパティを GroupByAreaMulti コントロールに設定できます。この group-by 領域が動作するのは、GroupByAreaMode プロパティを MultipleFieldLayoutsCompact または MultipleFieldLayoutsFull に設定する時のみです。
GroupByAreaLocation - このプロパティによって group-by 領域の位置を設定することができます。外部の group-by 領域を使用している場合には、このプロパティはコントロールに影響しません。
上記にリストされたプロパティに加えて、 FieldSettings オブジェクトは特定の Field オブジェクトでのグループ化関連動作の修正を可能にするプロパティを公開します。
AllowGroupBy - このプロパティはエンドユーザーがフィールドをグループ化の基準として使用できるかどうかを決定します。
GroupByComparer - .NET Framework にある IComparer インターフェイスを実装するオブジェクトにこのプロパティを設定することによって、group-by レコードの開発者固有のソート ロジックを提供できます。
GroupByEvaluator - IGroupByEvaluator インターフェイスを実装するオブジェクトにこのプロパティを設定することによって、開発者固有のグループ化ロジックを提供できます。
GroupByMode - DataPresenter コントロールはいくつかの一般的に使用される group-by エバリュエーターを提供します。このプロパティを組み込みの group-by エバリュエーターに設定して、デフォルトのグループ化ロジックを変更できます。