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; }
/// <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()); } }
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"); } }
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); }
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; }
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"); } }
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); }