public override void Execute(object parameter) { base.Execute(parameter); ColumnHeaderTapContext context = parameter as ColumnHeaderTapContext; string columnHeader = context.Column.Header.ToString(); RadDataGrid grid = this.Owner as RadDataGrid; if (context.Column.SortDirection == SortDirection.None) { grid.SortDescriptors.Clear(); grid.SortDescriptors.Add(new DelegateSortDescriptor { KeyLookup = new CustomIKeyLookup() { GroupHeaderName = columnHeader }, SortOrder = SortOrder.Ascending }); context.Column.SortDirection = SortDirection.Ascending; } else if (context.Column.SortDirection == SortDirection.Ascending) { grid.SortDescriptors.Clear(); grid.SortDescriptors.Add(new DelegateSortDescriptor { KeyLookup = new CustomIKeyLookup() { GroupHeaderName = columnHeader }, SortOrder = SortOrder.Descending }); context.Column.SortDirection = SortDirection.Descending; } else { grid.SortDescriptors.Clear(); context.Column.SortDirection = SortDirection.None; } }
internal ColumnHeaderTapContext GenerateColumnHeaderTapContext(DataGridColumn column, PointerDeviceType deviceType) { bool multiple = false; bool canSort = column.CanSort; if (canSort) { switch (this.UserSortMode) { case DataGridUserSortMode.Auto: if (deviceType == PointerDeviceType.Touch) { multiple = true; } else { multiple = KeyboardHelper.IsModifierKeyDown(VirtualKey.Control); } break; case DataGridUserSortMode.Multiple: multiple = true; break; case DataGridUserSortMode.None: canSort = false; break; } } var context = new ColumnHeaderTapContext() { Column = column, CanSort = canSort, IsMultipleSortAllowed = multiple }; return(context); }