void IDropTarget.DragOver(UIElement draggedElement, Point mousePosition) { ColumnManagerCell cell = draggedElement as ColumnManagerCell; if (cell != null) { HierarchicalGroupByControlNode hierarchicalGroupByControlNode = this.GetHierarchicalGroupByControlNodeFromColumnManagerCell(cell); // It may not be visible if (hierarchicalGroupByControlNode != null) { hierarchicalGroupByControlNode.ShowFarDropMark(cell, mousePosition); } } else { HierarchicalGroupByItem hierarchicalGroupByItem = draggedElement as HierarchicalGroupByItem; if (hierarchicalGroupByItem == null) { return; } HierarchicalGroupByControlNode hierarchicalGroupByControlNode = this.GetHierarchicalGroupByControlNodeFromHierarchicalGroupByItem(hierarchicalGroupByItem); Debug.Assert(hierarchicalGroupByControlNode != null, "CanDrop should have returned false"); if (hierarchicalGroupByControlNode == null) { throw new DataGridInternalException("A HierarchicalGroupByControlNode must exist for every level."); } hierarchicalGroupByControlNode.ShowFarDropMark(mousePosition); } }
void IDropTarget.DragOver(UIElement draggedElement, Point mousePosition) { ColumnManagerCell cell = draggedElement as ColumnManagerCell; if (cell != null) { DataGridContext draggedCellDataGridContext = DataGridControl.GetDataGridContext(cell); HierarchicalGroupByControlNode draggedOverHierarchicalGroupByControlNode = HierarchicalGroupByItem.GetParentHierarchicalGroupByControlNode(this); if (draggedCellDataGridContext == null) { throw new DataGridInternalException("A ColumnManagerCell must have a DataGridContext."); } if (draggedOverHierarchicalGroupByControlNode == null) { throw new DataGridInternalException("draggedOverHierarchicalGroupByControlNode is null."); } if (draggedOverHierarchicalGroupByControlNode.GroupLevelDescriptions == draggedCellDataGridContext.GroupLevelDescriptions) { this.ShowDropMark(mousePosition); } else { // This ColumnManagerCell does not belong this parent HierarchicalGroupByControlNode, display the DropMark on the correct one HierarchicalGroupByControl parentGBC = GroupingHelper.GetHierarchicalGroupByControl(draggedOverHierarchicalGroupByControlNode); if (parentGBC == null) { throw new DataGridInternalException("The hierarchical group-by item must be rooted by a HierarchicalGroupByControl."); } HierarchicalGroupByControlNode hierarchicalGroupByControlNode = parentGBC.GetHierarchicalGroupByControlNodeFromColumnManagerCell(cell); Debug.Assert(hierarchicalGroupByControlNode != null, "CanDrop should have returned false"); if (hierarchicalGroupByControlNode == null) { throw new DataGridInternalException("A HierarchicalGroupByControlNode must exist for every level."); } hierarchicalGroupByControlNode.ShowFarDropMark(cell, mousePosition); } } else { HierarchicalGroupByItem hierarchicalGroupByItem = draggedElement as HierarchicalGroupByItem; if (hierarchicalGroupByItem == null) { return; } HierarchicalGroupByControlNode draggedHierarchicalGroupByControlNode = HierarchicalGroupByItem.GetParentHierarchicalGroupByControlNode(hierarchicalGroupByItem); HierarchicalGroupByControlNode draggedOverHierarchicalGroupByControlNode = HierarchicalGroupByItem.GetParentHierarchicalGroupByControlNode(this); if (draggedHierarchicalGroupByControlNode == null) { throw new DataGridInternalException("draggedHierarchicalGroupByControlNode is null."); } if (draggedOverHierarchicalGroupByControlNode == null) { throw new DataGridInternalException("draggedOverHierarchicalGroupByControlNode is null."); } if (draggedHierarchicalGroupByControlNode.GroupLevelDescriptions == draggedOverHierarchicalGroupByControlNode.GroupLevelDescriptions) { this.ShowDropMark(mousePosition); } else { // This HierarchicalGroupByItem does not belong this parent HierarchicalGroupByControlNode, display the DropMark on the correct one HierarchicalGroupByControl parentGBC = GroupingHelper.GetHierarchicalGroupByControl(draggedOverHierarchicalGroupByControlNode); if (parentGBC == null) { throw new DataGridInternalException("A hierarchical group-by item must be rooted by a HierarchicalGroupByControl."); } HierarchicalGroupByControlNode hierarchicalGroupByControlNode = parentGBC.GetHierarchicalGroupByControlNodeFromHierarchicalGroupByItem(hierarchicalGroupByItem); Debug.Assert(hierarchicalGroupByControlNode != null, "CanDrop should have returned false"); if (hierarchicalGroupByControlNode == null) { throw new DataGridInternalException("A HierarchicalGroupByControlNode must exist for every level."); } hierarchicalGroupByControlNode.ShowFarDropMark(mousePosition); } } }