protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e) { bool isMouseCaptured = this.IsMouseCaptured; bool isPressed = this.IsPressed; if (m_dragSourceManager != null) { m_dragSourceManager.ProcessMouseLeftButtonUp(e); } if (isMouseCaptured) { bool click = isPressed; if (click) { bool allowSort = true; GroupByControl parentGBC = this.GetParentGroupByControl(); if (parentGBC != null) { allowSort = parentGBC.AllowSort; } if (allowSort) { DataGridContext gridContext = DataGridControl.GetDataGridContext(this); GroupLevelDescription groupInfo = this.Content as GroupLevelDescription; Debug.Assert((gridContext != null) && (groupInfo != null)); if ((gridContext != null) && (groupInfo != null)) { ColumnBase column = gridContext.Columns[groupInfo.FieldName]; if ((column != null) && (column.AllowSort)) { DataGridContext dataGridContext = DataGridControl.GetDataGridContext(this); SortDescriptionCollection sortDescriptions = dataGridContext.Items.SortDescriptions; ColumnCollection columns = dataGridContext.Columns; SortingHelper.ToggleColumnSort( dataGridContext, sortDescriptions, columns, column, ((Keyboard.Modifiers & ModifierKeys.Shift) != ModifierKeys.Shift)); e.Handled = true; } } } } } base.OnMouseLeftButtonUp(e); }
internal void DoSort(bool shiftUnpressed) { if (!this.CanDoSort()) { return; } DataGridContext dataGridContext = this.DataGridContext; Debug.Assert(dataGridContext != null); SortingHelper.ToggleColumnSort( dataGridContext, dataGridContext.Items.SortDescriptions, dataGridContext.Columns, this.ParentColumn, shiftUnpressed); }
protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e) { bool isMouseCaptured = this.IsMouseCaptured; bool isPressed = this.IsPressed; if (m_dragSourceManager != null) { m_dragSourceManager.ProcessMouseLeftButtonUp(e); } if (isMouseCaptured) { bool click = isPressed; if (click) { // DataGridCollectionView always return true for CanSort bool allowSort = true; // Use the ParentDataGridContext to be sure to get a // DataGridContext of the correct detail level since // all the HierarchicalGroupByItem will share the same DataGridContext // which is the one of the level where the HierarchicalGroupByControl // is located DataGridContext dataGridContext; try { dataGridContext = this.ParentDataGridContext; } catch (DataGridInternalException) { dataGridContext = null; } if ((dataGridContext != null) && (dataGridContext.SourceDetailConfiguration == null)) { allowSort = dataGridContext.Items.CanSort; } if (allowSort) { ColumnCollection columns = this.ParentColumns; GroupLevelDescription groupInfo = this.Content as GroupLevelDescription; Debug.Assert((columns != null) && (groupInfo != null)); if ((columns != null) && (groupInfo != null)) { ColumnBase column = columns[groupInfo.FieldName]; if ((column != null) && (column.AllowSort)) { SortingHelper.ToggleColumnSort( dataGridContext, this.ParentSortDescriptions, columns, column, ((Keyboard.Modifiers & ModifierKeys.Shift) != ModifierKeys.Shift)); e.Handled = true; } } } } } base.OnMouseLeftButtonUp(e); }