bool IDropTarget.CanDropElement(UIElement draggedElement) { ColumnManagerCell draggedCell = draggedElement as ColumnManagerCell; if ((draggedCell == null) || (this == draggedCell)) { return(false); } ColumnManagerRow parentRow = this.ParentRow as ColumnManagerRow; if ((parentRow == null) || !parentRow.AllowColumnReorder) { return(false); } if (!ColumnManagerCell.CanMove(draggedCell) || !ColumnManagerCell.CanMove(this)) { return(false); } DataGridContext draggedDetailContext = draggedCell.DataGridContext; DataGridContext sourceDetailContext = this.DataGridContext; Debug.Assert((draggedDetailContext != null) && (sourceDetailContext != null)); return((sourceDetailContext.SourceDetailConfiguration == draggedDetailContext.SourceDetailConfiguration) && (sourceDetailContext.GroupLevelDescriptions == draggedDetailContext.GroupLevelDescriptions)); }
bool IDropTarget.CanDropElement(UIElement draggedElement, RelativePoint mousePosition) { var draggedCell = draggedElement as ColumnManagerCell; if ((draggedCell == null) || (this == draggedCell)) { return(false); } var parentRow = this.ParentRow as ColumnManagerRow; if ((parentRow == null) || !parentRow.AllowColumnReorder) { return(false); } var draggedDetailContext = draggedCell.DataGridContext; var sourceDetailContext = this.DataGridContext; Debug.Assert((draggedDetailContext != null) && (sourceDetailContext != null)); if ((sourceDetailContext.SourceDetailConfiguration != draggedDetailContext.SourceDetailConfiguration) || (sourceDetailContext.GroupLevelDescriptions != draggedDetailContext.GroupLevelDescriptions)) { return(false); } if (!ColumnManagerCell.CanMove(draggedCell)) { return(false); } var manager = draggedCell.DragSourceManager as ColumnReorderingDragSourceManager; if ((manager != null) && (manager.IsAnimatedColumnReorderingEnabled)) { if (!manager.CanReorder(draggedCell, this, mousePosition)) { return(false); } } else { var relativePosition = mousePosition.GetPoint(this); var moveBefore = (relativePosition.X <= this.ActualWidth / 2d); if (moveBefore) { if (!draggedCell.CanMoveBefore(this.ParentColumn)) { return(false); } } else { if (!draggedCell.CanMoveAfter(this.ParentColumn)) { return(false); } } } return(true); }