protected override void OnMouseMove(MouseEventArgs e)
        {
            if (_isDragging && _dragAdorner != null)
            {
                // update the position of the adorner

                var current = e.GetPosition(this);
                _dragAdorner.OffsetX = current.X - _mouseDown.X;
                _dragAdorner.OffsetY = current.Y - _mouseDown.Y;

                // find the item that we are dragging over
                var element = InputHitTest(new Point(e.GetPosition(this).X, e.GetPosition(this).Y)) as UIElement;

                if (element != null)
                {
                    var itemOver = TreeHelpers.GetItemContainerFromChildElement(this, element) as FrameworkElement;

                    if (itemOver != null)
                    {
                        var p = Mouse.GetPosition(itemOver);
                        var q = PointToQuadrant(itemOver, p);

                        if (itemOver != _lastMouseOverItem || q != _lastMouseOverQuadrant)
                        {
                            if (q == ReorderQuadrant.BottomLeft || q == ReorderQuadrant.BottomRight)
                            {
                                _lastMoveOverPlacement = ReorderPlacement.After;
                            }
                            else
                            {
                                _lastMoveOverPlacement = ReorderPlacement.Before;
                            }
                            PreviewInsert(itemOver, _lastMoveOverPlacement);
                            _lastMouseOverItem     = itemOver;
                            _lastMouseOverQuadrant = q;
                        }
                    }
                }
            }

            base.OnMouseMove(e);
        }
示例#2
0
        protected override void OnMouseMove(MouseEventArgs e)
        {
            if (m_isDragging && m_dragAdorner != null)
            {
                // update the position of the adorner

                Point current = e.GetPosition(this);
                m_dragAdorner.OffsetY = current.Y - m_mouseDown.Y;

                // find the item that we are dragging over
                UIElement element = this.InputHitTest(new Point(this.ActualWidth / 2, e.GetPosition(this).Y)) as UIElement;

                if (element != null)
                {
                    FrameworkElement itemOver = TreeHelpers.GetItemContainerFromChildElement(this, element) as FrameworkElement;

                    if (itemOver != null)
                    {
                        Point           p = Mouse.GetPosition(itemOver);
                        ReorderQuadrant q = PointToQuadrant(itemOver, p);

                        if (itemOver != m_lastMouseOverItem || q != m_lastMouseOverQuadrant)
                        {
                            if (q == ReorderQuadrant.BottomLeft || q == ReorderQuadrant.BottomRight)
                            {
                                m_lastMoveOverPlacement = ReorderPlacement.After;
                            }
                            else
                            {
                                m_lastMoveOverPlacement = ReorderPlacement.Before;
                            }
                            PreviewInsert(itemOver, m_lastMoveOverPlacement);
                            m_lastMouseOverItem     = itemOver;
                            m_lastMouseOverQuadrant = q;
                        }
                    }
                }
            }

            base.OnMouseMove(e);
        }
示例#3
0
        protected override void OnMouseMove(MouseEventArgs e)
        {
            if (m_isDragging && m_dragAdorner != null) {
            // update the position of the adorner

            Point current = e.GetPosition(this);
            m_dragAdorner.OffsetY = current.Y - m_mouseDown.Y;

            // find the item that we are dragging over
            UIElement element = this.InputHitTest(new Point(this.ActualWidth / 2, e.GetPosition(this).Y)) as UIElement;

            if (element != null) {
              FrameworkElement itemOver = TreeHelpers.GetItemContainerFromChildElement(this, element) as FrameworkElement;

              if (itemOver != null) {
            Point p = Mouse.GetPosition(itemOver);
            ReorderQuadrant q = PointToQuadrant(itemOver, p);

            if (itemOver != m_lastMouseOverItem || q != m_lastMouseOverQuadrant) {
              if (q == ReorderQuadrant.BottomLeft || q == ReorderQuadrant.BottomRight) {
                m_lastMoveOverPlacement = ReorderPlacement.After;
              }
              else {
                m_lastMoveOverPlacement = ReorderPlacement.Before;
              }
              PreviewInsert(itemOver, m_lastMoveOverPlacement);
              m_lastMouseOverItem = itemOver;
              m_lastMouseOverQuadrant = q;
            }
              }
            }
              }

              base.OnMouseMove(e);
        }
        protected override void OnMouseMove(MouseEventArgs e)
        {
            if (_isDragging && _dragAdorner != null)
            {
                // update the position of the adorner

                var current = e.GetPosition(this);
                _dragAdorner.OffsetX = current.X - _mouseDown.X;
                _dragAdorner.OffsetY = current.Y - _mouseDown.Y;

                // find the item that we are dragging over
                var element = InputHitTest(new Point(e.GetPosition(this).X, e.GetPosition(this).Y)) as UIElement;

                if (element != null)
                {
                    var itemOver = TreeHelpers.GetItemContainerFromChildElement(this, element) as FrameworkElement;

                    if (itemOver != null)
                    {
                        var p = Mouse.GetPosition(itemOver);
                        var q = PointToQuadrant(itemOver, p);

                        if (itemOver != _lastMouseOverItem || q != _lastMouseOverQuadrant)
                        {
                            if (q == ReorderQuadrant.BottomLeft || q == ReorderQuadrant.BottomRight)
                            {
                                _lastMoveOverPlacement = ReorderPlacement.After;
                            }
                            else
                            {
                                _lastMoveOverPlacement = ReorderPlacement.Before;
                            }
                            PreviewInsert(itemOver, _lastMoveOverPlacement);
                            _lastMouseOverItem = itemOver;
                            _lastMouseOverQuadrant = q;
                        }
                    }
                }
            }

            base.OnMouseMove(e);
        }