Exemple #1
0
        public virtual void ProcessMouseMove(MouseEventArgs e)
        {
            if (e.Handled)
            {
                return;
            }

#if DEBUG
            this.CheckMouseEventArgs(e);
#endif

            if ((this.InitialMousePositionToDragContainerAdorner.HasValue) &&
                (e.LeftButton == MouseButtonState.Pressed))
            {
                if (!this.IsDragging)
                {
                    Point currentPosition = e.GetPosition(this.AdornerLayerInsideDragContainer);

                    if (DragDropHelper.IsMouseMoveDrag(this.InitialMousePositionToDraggedElement.Value, currentPosition))
                    {
                        this.BeginDrag();
                    }
                }

                if (this.IsDragging)
                {
                    this.Drag(e);
                }
            }
        }
        private void DragMove(Func <IInputElement, Point> getPosition, bool isCreatingCopy)
        {
            if (!m_initialMousePositionToAdorner.HasValue)
            {
                return;
            }

            if (!m_isDragging)
            {
                var position = getPosition.Invoke(m_adornerLayer);

                if (DragDropHelper.IsMouseMoveDrag(m_initialMousePositionToAdorner.Value, position))
                {
                    m_draggedElementGhost = DragSourceManagerBase.CreateDraggedElementGhost(m_draggedElement, isCreatingCopy);

                    this.OnDragStart(getPosition);
                    this.IsDragging = true;
                }
            }

            if (m_isDragging)
            {
                this.OnDragMove(getPosition);
                this.UpdateGhost(getPosition);
            }
        }