Exemplo n.º 1
0
        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;
            }
        }
Exemplo n.º 2
0
        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);
        }