グループ化した列の並び順を制御したい場合は、FieldSettingsのGroupByComparerにIComparerインターフェースを実装したクラスのインスタンスを指定してください。
下のコードでは、12行目で指定しています。
<!-- MainWindow.xaml --> <Window.Resources> <local:SortComparerForPrefecture x:Key="sortComparerForPrefecture"/> </Window.Resources> ... <igDP:XamDataGrid DataSource="{Binding Prefectures}"> <igDP:XamDataGrid.FieldLayouts> <igDP:FieldLayout> <igDP:FieldLayout.Fields> <igDP:Field Name="PrefectureName" Label="都道府県"> <igDP:Field.Settings> <igDP:FieldSettings GroupByComparer="{StaticResource sortComparerForPrefecture}" /> </igDP:Field.Settings> </igDP:Field> </igDP:FieldLayout.Fields> <igDP:FieldLayout.SortedFields> <igDP:FieldSortDescription FieldName="PrefectureName" IsGroupBy="True"/> </igDP:FieldLayout.SortedFields> </igDP:FieldLayout> </igDP:XamDataGrid.FieldLayouts> </igDP:XamDataGrid>
そしてこちらがIComparerを実装したクラスSortComparerForPrefecture本体です。
// SortComparerForPrefecture.cs public class SortComparerForPrefecture : IComparer { public int Compare(object x, object y) { // 渡されてきた引数をGroupByRecordとして取得する。 GroupByRecord recordX = x as GroupByRecord; GroupByRecord recordY = y as GroupByRecord; // DataContextを取得 MainWindowViewModel vm = recordX.FieldLayout.DataContext as MainWindowViewModel; // 該当するデータをそれぞれ取得する。 Prefecture prefecture1 = vm.Prefectures.FirstOrDefault(pref => pref.PrefectureName == recordX.Value.ToString()); Prefecture prefecture2 = vm.Prefectures.FirstOrDefault(pref => pref.PrefectureName == recordY.Value.ToString()); // 戻り値を返す if (prefecture1 == null) return 0; else if (prefecture2 == null) return 1; // 都道府県コード順で並べ替える return prefecture1.PrefectureCode.CompareTo(prefecture2.PrefectureCode); } }
実行結果
都道府県でグループ化されています。並び順は都道府県の漢字コード順ではなく、北から順(※正確には都道府県コード順)になっています。
リファレンス
「グループ化の概要 (xamDataGrid)」
https://jp.infragistics.com/help/wpf/xamdatagrid-grouping-overview
「GroupByComparer プロパティ」
https://jp.infragistics.com/help/wpf/infragisticswpf.datapresenter~infragistics.windows.datapresenter.fieldsettings~groupbycomparer
「GroupByRecord クラス メンバ」
https://jp.infragistics.com/help/wpf/infragisticswpf.datapresenter~infragistics.windows.datapresenter.groupbyrecord_members