Example #1
0
        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);
        }
Example #2
0
 public static void UpdateDropTarget(IDropLocation dropTarget)
 {
     if (DropTargetInfo != null)
     {
         DropTargetInfo.HideVisualCues();
     }
     DropTargetInfo = dropTarget;
     if (DropTargetInfo != null)
     {
         DropTargetInfo.ShowVisualCues();
     }
 }