Пример #1
0
        void Shape_PreviewMouseMove(object sender, MouseEventArgs e)
        {
            if (Mouse.LeftButton != MouseButtonState.Pressed)
            {
                return;
            }

            System.Windows.Point pos    = e.GetPosition(MainMap);
            HitTestResult        result = VisualTreeHelper.HitTest(MainMap, pos);

            if (result == null)
            {
                return;
            }

            PositionMarker  marker  = (PositionMarker)sender;
            DragDropAdorner adorner = new DragDropAdorner(marker);

            mAdornerLayer = AdornerLayer.GetAdornerLayer(grid1); // Window class do not have AdornerLayer
            mAdornerLayer.Add(adorner);

            System.Windows.DragDrop.DoDragDrop(marker, marker, DragDropEffects.Copy);

            mStartHoverTime = DateTime.MinValue;
            mAdornerLayer.Remove(adorner);
            mAdornerLayer = null;
        }
        /// <summary>
        /// Invoked when an unhandled PreviewMouseMove�routed event reaches the element in its route.
        /// </summary>
        /// <param name="e">The MouseEventArgs that contains the event data.</param>
        protected override void OnPreviewMouseMove(MouseEventArgs e)
        {
            // If the mouse button was pressed, the mouse move starts the drag operation.
            // Create adorner element used to display the snapshot of the element while dragging.
            if (this.mouseDown)
            {
                this.mouseMovePosition = e.GetPosition(this);
                if (this.CanDrag(this.mouseDownPosition, this.mouseMovePosition))
                {
                    if (Mouse.Captured == null)
                    {
                        Mouse.Capture(this);
                    }

                    if (this.adorner == null)
                    {
                        AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this);
                        if (adornerLayer != null)
                        {
                            this.adorner = new DragDropAdorner(this);
                            adornerLayer.Add(this.adorner);
                        }
                    }

                    if (this.adorner != null)
                    {
                        this.adorner.Left = this.mouseMovePosition.X - this.mouseDownPosition.X;
                        this.adorner.Top  = this.mouseMovePosition.Y - this.mouseDownPosition.Y;
                    }
                }
            }

            base.OnPreviewMouseMove(e);
        }
        /// <summary>
        /// Destroy all resources associated with the adorner used for drag operation.
        /// </summary>
        private void DestroyAdorner()
        {
            if (this.adorner != null)
            {
                if (this.storyboard != null)
                {
                    this.storyboard.Completed -= new EventHandler(this.Storyboard_Completed);
                    this.storyboard            = null;

                    INameScope nameScope = NameScope.GetNameScope(this);
                    if (nameScope != null)
                    {
                        UnregisterName(this.adorner.Name);
                        NameScope.SetNameScope(this, null);
                    }
                }

                AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this);
                if (adornerLayer != null)
                {
                    adornerLayer.Remove(this.adorner);
                }

                this.adorner = null;
            }
        }
 protected void DragFinished(DragDropEffects ret)
 {
     if (_adorner != null)
     {
         AdornerLayer.GetAdornerLayer(_source).Remove(_adorner);
     }
     _adorner = null;
 }
Пример #5
0
        /// <summary>
        /// 拖动
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TODO_ListView_PreviewMouseMove(object sender, MouseEventArgs e)
        {
            try
            {
                if (Mouse.LeftButton != MouseButtonState.Pressed)
                {
                    return;
                }

                Point         pos    = e.GetPosition(TODO_ListView);
                HitTestResult result = VisualTreeHelper.HitTest(TODO_ListView, pos);
                if (result == null)
                {
                    return;
                }

                ListBoxItem listBoxItem = Utils.FindVisualParent <ListBoxItem>(result.VisualHit);
                if (listBoxItem == null || listBoxItem.Content != TODO_ListView.SelectedItem || (TODO_ListView.SelectedItem as todo_list).IsEnabled_TODO == true)
                {
                    return;
                }

                if (!hadAddEvent)
                {
                    TODO_ListView.QueryContinueDrag += TODO_ListView_QueryContinueDrag;
                    hadAddEvent = true;
                }

                //添加修饰器:拖动时跟随鼠标移动显示
                DragDropAdorner adorner = new DragDropAdorner(listBoxItem);
                mAdornerLayer = AdornerLayer.GetAdornerLayer(mGrid);
                mAdornerLayer.Add(adorner);

                //获取数据上下文
                DataObject dataObject = new DataObject(typeof(ContentControl), listBoxItem.DataContext);
                //启动拖放
                DragDrop.DoDragDrop(TODO_ListView, dataObject, DragDropEffects.Copy);

                mAdornerLayer.Remove(adorner);
                mAdornerLayer = null;
                hadAddEvent   = false;

                DropShadowEffect outerGlow = new DropShadowEffect();
                outerGlow.ShadowDepth = 0;
                outerGlow.Color       = Color.FromRgb(255, 255, 255);
                outerGlow.BlurRadius  = 0;
                Shine.Effect          = outerGlow;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
Пример #6
0
 private void DragStarted()
 {
     try
     {
         _isDragging     = true;
         _overlayElement = new DragDropAdorner(_originalElement, Tag);
         AdornerLayer layer = AdornerLayer.GetAdornerLayer(_originalElement);
         layer.Add(_overlayElement);
     }
     catch (Exception ex)
     {
         VMuktiHelper.ExceptionHandler(ex, "DragStarted()", "Controls\\ModuleExplorer\\CtlModule.xaml.cs");
     }
 }
Пример #7
0
        private void MouseHisDataGrid_OnPreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            //---获取拖拽行---
            Point position = e.GetPosition(MouseHisDataGrid);
            var   row      = UIHelpers.TryFindFromPoint <DataGridRow>(MouseHisDataGrid, position);

            if (row == null)
            {
                return;
            }
            isDragging = true;                                                              //开始拖拽
            DragDropAdorner adorner       = new DragDropAdorner(row);
            var             mAdornerLayer = AdornerLayer.GetAdornerLayer(MouseHisDataGrid); // Window class do not have AdornerLayer

            mAdornerLayer.Add(adorner);
        }
Пример #8
0
        private void listBoxPreviewMouseMove(object sender, MouseEventArgs e)
        {
            ListBox listBox = sender as ListBox;

            if (Mouse.LeftButton != MouseButtonState.Pressed)
            {
                return;
            }

            Point         pos    = e.GetPosition(listBox);
            HitTestResult result = VisualTreeHelper.HitTest(listBox, pos);

            if (result == null)
            {
                return;
            }

            ListBoxItem listBoxItem = Utils.FindVisualParent <ListBoxItem>(result.VisualHit); // Find your actual visual you want to drag

            //   if (listBoxItem == null || listBoxItem.Content != listBox.SelectedItem || !(listBox.SelectedItem is DataItem))
            if (listBoxItem == null)
            {
                //if (listBoxItem == null || listBoxItem.Content != listBox.SelectedItem)
                return;
            }

            DragDropAdorner adorner = new DragDropAdorner(listBoxItem);

            mAdornerLayer = AdornerLayer.GetAdornerLayer(DragableGrid); // Window class do not have AdornerLayer
            mAdornerLayer.Add(adorner);

            //DataItem dataItem = listBoxItem.Content as DataItem;
            DataObject dataObject = new DataObject(listBoxItem);

            // Here, we should notice that dragsource param will specify on which
            // control the drag&drop event will be fired
            System.Windows.DragDrop.DoDragDrop(listBox, dataObject, DragDropEffects.Copy);

            mStartHoverTime = DateTime.MinValue;
            mHoveredItem    = null;
            mAdornerLayer.Remove(adorner);
            mAdornerLayer = null;
        }
Пример #9
0
        private void DragFinished(bool cancelled)
        {
            try
            {
                System.Windows.Input.Mouse.Capture(null);
                if (_overlayElement != null)
                {
                    AdornerLayer.GetAdornerLayer(_overlayElement.AdornedElement).Remove(_overlayElement);
                }

                _overlayElement  = null;
                _originalElement = null;


                _isDragging = false;
                _isDown     = false;
            }
            catch (Exception ex)
            {
                VMuktiHelper.ExceptionHandler(ex, "DragFinished()", "Controls\\ModuleExplorer\\CtlModule.xaml.cs");
            }
        }
Пример #10
0
        private void _gridheader_MouseMove(object sender, MouseEventArgs e)
        {
            if (ptStartDrag.X != -1 && ptStartDrag.Y != -1)
            {
                Point ptNow = e.GetPosition(_gridheader);
                if (Math.Abs(ptNow.X - ptStartDrag.X) > 5 && _gridheader.IsAdjustingColumn == false)
                {
                    // 说明开始拖拽操作了
                    double d       = ptStartDrag.X;
                    int    iColumn = _gridheader.GetCellColumn(ref d);

                    DragDropAdorner adorner = new DragDropAdorner(_gridheader, _gridheader.GetColumSnapshot(iColumn));
                    DataObject      data    = new DataObject(typeof(int), iColumn);

                    mAdornerLayer = AdornerLayer.GetAdornerLayer(this);

                    mAdornerLayer.Add(adorner);
                    DragDrop.DoDragDrop(_gridheader, data, DragDropEffects.Move);
                    mAdornerLayer.Remove(adorner);
                    mAdornerLayer = null;
                    ptStartDrag   = new Point(-1, -1); // 这里还原成初始状态
                }
            }
        }
        private void DoDragDrop(object dragItem, UIElement adornerSource)
        {
            if (adornerSource != null)
            {
                var rect  = VisualTreeHelper.GetDescendantBounds(adornerSource);
                var size  = new Size((double)Math.Ceiling(rect.Width), (double)Math.Ceiling(rect.Height));
                var brush = new VisualBrush(adornerSource);
                _adorner            = new DragDropAdorner(_dragScope, size, brush);
                _adorner.Opacity    = 0.7;
                _adorner.Visibility = Visibility.Hidden;
            }

            DragDrop.AddPreviewDragEnterHandler(_dragScope, _dragEnter);
            DragDrop.AddPreviewDragOverHandler(_dragScope, _dragOver);
            DragDrop.AddPreviewDragLeaveHandler(_dragScope, _dragLeave);

            var resultEffects = DragDrop.DoDragDrop(_source, dragItem, DragDropEffects.All);

            DragFinished(resultEffects);

            DragDrop.RemovePreviewDragEnterHandler(_dragScope, _dragEnter);
            DragDrop.RemovePreviewDragOverHandler(_dragScope, _dragOver);
            DragDrop.RemovePreviewDragLeaveHandler(_dragScope, _dragLeave);
        }