Esempio n. 1
0
        private void DragSource_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            try
            {
                Visual visual = e.OriginalSource as Visual;
                _topWindow            = (Window)DragDropHelper.FindAncestor(typeof(Window), visual);
                _initialMousePosition = e.GetPosition(_topWindow);

                string adornerLayerName = GetAdornerLayer(sender as DependencyObject);
                _adornerLayer = (Canvas)_topWindow.FindName(adornerLayerName);

                string dropTargetName = GetDropTarget(sender as DependencyObject);
                _dropTarget = (UIElement)_topWindow.FindName(dropTargetName);

                _draggedData = (sender as FrameworkElement).DataContext;
            }
            catch (Exception exc)
            {
                Console.WriteLine("Exception in DragDropHelper: " + exc.InnerException.ToString());
            }
        }
Esempio n. 2
0
        // Drag = mouse down + move by a certain amount
        private void DragSource_PreviewMouseMove(object sender, MouseEventArgs e)
        {
            if (!_mouseCaptured && _draggedData != null)
            {
                // Only drag when user moved the mouse by a reasonable amount.
                if (DragDropHelper.IsMovementBigEnough(_initialMousePosition, e.GetPosition(_topWindow)))
                {
                    _adorner             = (DragDropAdornerBase)GetDragDropControl(sender as DependencyObject);
                    _adorner.DataContext = _draggedData;
                    _adorner.Opacity     = 0.7;

                    _adornerLayer.Visibility = Visibility.Visible;
                    _adornerLayer.Children.Add(_adorner);
                    _mouseCaptured = Mouse.Capture(_adorner);

                    Canvas.SetLeft(_adorner, _initialMousePosition.X - 20);
                    Canvas.SetTop(_adorner, _initialMousePosition.Y - 15);

                    _adornerLayer.PreviewMouseMove += new MouseEventHandler(_adorner_MouseMove);
                    _adornerLayer.PreviewMouseUp   += new MouseButtonEventHandler(_adorner_MouseUp);
                }
            }
        }