Ejemplo n.º 1
0
        private void AssociatedObject_MouseMove(object sender, MouseEventArgs e)
        {
            UIElement element = sender as UIElement;

            if (e.LeftButton == MouseButtonState.Released)
            {
                element.SetValue(StartPointProperty, null);
            }
            if (element.GetValue(StartPointProperty) == null)
            {
                return;
            }

            Point startPoint = (Point)element.GetValue(StartPointProperty);
            Point point      = e.GetPosition(element as UIElement);

            if (!WPFUtility.IsDragging(startPoint, point))
            {
                return;
            }


            DraggingAdorner adorner = new DraggingAdorner(element, 0.5, point);

            SetDragAdorner(element, adorner);

            DataObject data = new DataObject();

            //set the adorner for drop action and create the clone element.
            data.SetData(typeof(DraggingAdorner), adorner);
            data.SetData(typeof(UIElement), element);

            ICommand dragcommand = GetDragCommand(element);

            //cann't drag without command
            if (dragcommand != null)
            {
                object parameter = GetDragCommandParameter(element); // ?? this.AssociatedObject.DataContext;

                if (parameter != null)
                {
                    data.SetData(DataFormats.Serializable, parameter);
                }

                if (dragcommand.CanExecute(parameter))
                {
                    dragcommand.Execute(parameter);
                    DragDrop.DoDragDrop(element, data, DragDropEffects.Copy | DragDropEffects.Move);
                }
            }

            adorner.Remove();

            SetDragAdorner(element, null);
        }
Ejemplo n.º 2
0
        private void AssociatedObject_QueryContinueDrag(object sender, QueryContinueDragEventArgs e)
        {
            UIElement       element = sender as UIElement;
            DraggingAdorner adorner = GetDragAdorner(element);
            Point           point   = WPFUtility.GetMousePosition(element);

            if (adorner != null)
            {
                adorner.Position = point;
            }
        }
Ejemplo n.º 3
0
 public static void SetDragAdorner(DependencyObject obj, DraggingAdorner value)
 {
     obj.SetValue(DragAdornerProperty, value);
 }