private void DragSourceManager_DroppedOutside(object sender, EventArgs e) { HierarchicalGroupByControlNode hierarchicalGroupByControlNode = HierarchicalGroupByItem.GetParentHierarchicalGroupByControlNode(this); if (hierarchicalGroupByControlNode == null) { throw new DataGridInternalException(); } bool allowGroupingModification = hierarchicalGroupByControlNode.IsGroupingModificationAllowed; if (!allowGroupingModification) { return; } ObservableCollection <GroupDescription> groupDescriptions = this.ParentGroupDescriptions; if (groupDescriptions != null) { // Get the HierarchicalGroupByControl before removing us from it HierarchicalGroupByControl parentGBC = GroupingHelper.GetHierarchicalGroupByControl(this); GroupLevelDescription groupLevelDescription = this.Content as GroupLevelDescription; DataGridContext dataGridContext = DataGridControl.GetDataGridContext(this); DataGridControl parentDataGridControl = (dataGridContext != null) ? dataGridContext.DataGridControl : null; GroupingHelper.RemoveGroupDescription(groupDescriptions, groupLevelDescription, parentDataGridControl); // Notify groups have changed for NoGroupContent parentGBC.UpdateHasGroups(); // Update the HasGroups property Debug.Assert(parentGBC != null); if (parentGBC == null) { throw new DataGridInternalException("The hierarchical group-by item must be rooted by a HierarchicalGroupByControl."); } } }
void IDropTarget.Drop(UIElement draggedElement) { ColumnManagerCell cell = draggedElement as ColumnManagerCell; if (cell == null) { return; } HierarchicalGroupByControl parentGBC = GroupingHelper.GetHierarchicalGroupByControl(this); if (parentGBC == null) { throw new DataGridInternalException("The hierarchical group-by control node must be rooted by a HierarchicalGroupByControl."); } DataGridContext dataGridContext = DataGridControl.GetDataGridContext(this); DataGridControl parentGrid = (dataGridContext != null) ? dataGridContext.DataGridControl : null; GroupingHelper.AppendNewGroupFromColumnManagerCell(cell, parentGrid); // Notify groups have changed for NoGroupContent parentGBC.UpdateHasGroups(); HierarchicalGroupByControlNode hierarchicalGroupByControlNode = parentGBC.GetHierarchicalGroupByControlNodeFromColumnManagerCell(cell); if (hierarchicalGroupByControlNode == null) { return; } hierarchicalGroupByControlNode.HideFarDropMark(cell); this.HideFarDropMark(); }
void IDropTarget.Drop(UIElement draggedElement) { ColumnManagerCell draggedColumnManagerCell = draggedElement as ColumnManagerCell; if (m_dropMarkAdorner != null) { GroupLevelDescription draggedOverGroupLevelDescription = this.Content as GroupLevelDescription; DropMarkAlignment alignment = m_dropMarkAdorner.Alignment; this.HideDropMark(); if (draggedColumnManagerCell != null) { DataGridContext dataGridContext = DataGridControl.GetDataGridContext(this); DataGridControl parentGrid = (dataGridContext != null) ? dataGridContext.DataGridControl : null; GroupingHelper.AddNewGroupFromColumnManagerCell(draggedColumnManagerCell, draggedOverGroupLevelDescription, alignment, parentGrid); } else { HierarchicalGroupByItem draggedGroupByItem = draggedElement as HierarchicalGroupByItem; if (draggedGroupByItem == null) { return; } GroupLevelDescription draggedGroupLevelDescription = draggedGroupByItem.Content as GroupLevelDescription; DataGridContext dataGridContext = DataGridControl.GetDataGridContext(this); DataGridControl parentDataGridControl = (dataGridContext != null) ? dataGridContext.DataGridControl : null; GroupLevelDescription destinationGroupLevelDescription = this.Content as GroupLevelDescription; GroupingHelper.MoveGroupDescription(this.ParentColumns, this.ParentGroupDescriptions, destinationGroupLevelDescription, alignment, draggedGroupLevelDescription, parentDataGridControl); } } else { // We try to add a new Group which is not in the current GroupLevelDescriptions if (draggedColumnManagerCell == null) { return; } DataGridContext dataGridContext = DataGridControl.GetDataGridContext(this); DataGridControl parentGrid = (dataGridContext != null) ? dataGridContext.DataGridControl : null; GroupingHelper.AppendNewGroupFromColumnManagerCell(draggedColumnManagerCell, parentGrid); } HierarchicalGroupByControl parentGBC = GroupingHelper.GetHierarchicalGroupByControl(this); Debug.Assert(parentGBC != null); if (parentGBC == null) { throw new DataGridInternalException("A hierarchical group-by item must be rooted by a HierarchicalGroupByControl."); } // Notify groups have changed for NoGroupContent parentGBC.UpdateHasGroups(); }