private IDropLocation GetDropLocationCore(Point cursor) { IDropLocation dropTarget = null; if (DragManager.DraggedElement.IsElementInSubtree(this)) { return(null); } if (this.ColumnDefinitions.Count == 1 && this.RowDefinitions.Count == 1 && this.Children.Count == 1 && this.Children[0] is ContentPanel && (this.Children[0] as ContentPanel).Children.Count == 0) { return(null); } Tuple <int, PointSituationRelativeToRect, double> columnInfo = GetColumn(cursor); Tuple <int, PointSituationRelativeToRect, double> rowInfo = GetRow(cursor); if (rowInfo.Item2 == PointSituationRelativeToRect.Fill && (columnInfo.Item2 == PointSituationRelativeToRect.Before || columnInfo.Item2 == PointSituationRelativeToRect.After)) { Rect rect = new Rect(); rect.X = columnInfo.Item3; rect.Y = rowInfo.Item3; rect.Width = Spacing; rect.Height = rows[rowInfo.Item1]; rect = GetMarkerCoordinates(rect); dropTarget = new InsertColumnGridDropLocation( this, columnInfo.Item1, rowInfo.Item1, columnInfo.Item2 == PointSituationRelativeToRect.After, rect); return(dropTarget); } if (columnInfo.Item2 == PointSituationRelativeToRect.Fill && (rowInfo.Item2 == PointSituationRelativeToRect.Before || rowInfo.Item2 == PointSituationRelativeToRect.After)) { Rect rect = new Rect(); rect.X = columnInfo.Item3; rect.Y = rowInfo.Item3; rect.Width = columns[columnInfo.Item1]; rect.Height = Spacing; rect = GetMarkerCoordinates(rect); dropTarget = new InsertRowGridDropLocation( this, columnInfo.Item1, rowInfo.Item1, rowInfo.Item2 == PointSituationRelativeToRect.After, rect); return(dropTarget); } return(dropTarget); }
public static void UpdateDropTarget(IDropLocation dropTarget) { if (DropTargetInfo != null) { DropTargetInfo.HideVisualCues(); } DropTargetInfo = dropTarget; if (DropTargetInfo != null) { DropTargetInfo.ShowVisualCues(); } }