private void End() { _treeView.PreviewMouseMove -= OnMouseMove; _adornerLayer.Remove(_panelAdorner); _panelAdorner = null; if (_draggingContainer != null) { OnCompleted?.Invoke(_overDragArea, _overlapItem, _draggingContainer); } _overDragArea = OverlapArea.Out; _overlapItem = null; _draggingContainer = null; }
private void Start() { if (_panelAdorner != null || _draggingContainer == null) { return; } if (_adornerLayer == null) { _adornerLayer = AdornerLayer.GetAdornerLayer(_treeView); } if (_panelAdorner == null) { _panelAdorner = GetPanelAdorner(_treeView, _draggingContainer); _adornerLayer.Add(_panelAdorner); } DragDrop.AddQueryContinueDragHandler(_treeView, OnQueryContinueDrag); DragDrop.DoDragDrop(_treeView, _draggingContainer.DataContext, DragDropEffects.Move); DragDrop.RemoveQueryContinueDragHandler(_treeView, OnQueryContinueDrag); End(); }