WPFではグループ化できますが、デフォルトでは昇順でグループ化されています。グループの並べ替え (昇順または降順) を制御できるようにする必要があることの 1 つです。例えば:
グループ 1
- 項目 1.1
- アイテム1.2
- アイテム1.3
グループ 2
- 項目 2.1
- 項目 2.2
また、次のように切り替えることもできます。
グループ 2
- 項目 2.1
- 項目 2.2
グループ 1
- 項目 1.1
- アイテム1.2
アイテム1.3
//Here is the function to setup a group for a particular column: private void SetupGrouping(DataGrid parentGrid, DataGridColumn col) { if (parentGrid == null || col == null || string.IsNullOrEmpty(col.SortMemberPath)) return; ICollectionView vw = GetDefaultView(); if (vw != null && vw.CanGroup) { if (vw.GroupDescriptions.Count != 0) { vw.GroupDescriptions.Clear(); } PropertyGroupDescription gd = new PropertyGroupDescription(col.SortMemberPath); // Check to see if the column is Priority, if it is // then do the grouping with high priority (3) on top. // The order should be High(3), Normal (2), Low(1) DataGridColumn priCol = GetColumnByID(ColumnFlags.Priority); if(col == priCol) { // Attempted to change the direction of the sort added by adding group. // However, it has error complaining SortDescription is sealed // and can't be changed. //if (vw.SortDescriptions != null && vw.SortDescriptions.Count > 0) //{ // SortDescription sd = vw.SortDescriptions[0]; // if (sd.PropertyName == col.SortMemberPath) // { // sd.Direction = ListSortDirection.Descending; // } //} } // Info: when we add a new GroupDescription to GroupDescriptions list, // guest what? a new SortDescription is also added to the // SortDescriptions list. vw.GroupDescriptions.Add(gd); } // Save off the column for later use GroupedColumn = col; // Set the DataGrid's Tag so that the GroupSyle can get the column name parentGrid.Tag = DispatchAttachedProperties.GetColumnHeader(col); }