Пример #1
0
        void _adornerLayer_StylusUp(object sender, StylusEventArgs e)
        {
            Debug.WriteLine(_adorner.AdornerDropState.ToString());
            switch (_adorner.AdornerDropState)
            {
                case DropState.CanDrop:
                    try
                    {
                        ((Storyboard)_adorner.Resources["canDrop"]).Completed += (s, args) =>
                        {
                            _adornerLayer.Children.Clear();
                            _adornerLayer.Visibility = Visibility.Collapsed;
                        };
                        ((Storyboard)_adorner.Resources["canDrop"]).Begin(_adorner);

                        // Added position in drop target
                        Point pos = e.GetPosition((IInputElement)_dropTarget);
                        if (ItemDropped != null)
                            ItemDropped(_adorner, new DragDropEventArgs(_draggedData, pos, _dropTarget));
                    }
                    catch (Exception)
                    { }
                    break;
                case DropState.CannotDrop:
                    try
                    {
                        Storyboard sb = _adorner.Resources["cannotDrop"] as Storyboard;
                        DoubleAnimation aniX = sb.Children[0] as DoubleAnimation;
                        aniX.To = _delta.X;
                        DoubleAnimation aniY = sb.Children[1] as DoubleAnimation;
                        aniY.To = _delta.Y;
                        sb.Completed += (s, args) =>
                        {
                            _adornerLayer.Children.Clear();
                            _adornerLayer.Visibility = Visibility.Collapsed;
                        };
                        sb.Begin(_adorner);
                    }
                    catch (Exception) { }
                    break;
            }

            _draggedData = null;
            //_adornerLayer.PreviewMouseMove -= new MouseEventHandler(_adorner_MouseMove);
            //_adornerLayer.PreviewMouseUp -= new MouseButtonEventHandler(_adorner_MouseUp);
            _adornerLayer.StylusUp -= new StylusEventHandler(_adornerLayer_StylusUp);

            if (_adorner != null)
            {
                _adorner.ReleaseMouseCapture();
            }
            _adorner = null;
            //_mouseCaptured = false;
            _stylusCaptured = false;
        }
Пример #2
0
        public void DragSourcePieMenuPreviewMouseLeftButtonUp(PieMenuHitTestEventArgs e)
        {
            StylusEventArgs ee = e.EventArgs;

            if (_adorner != null)
            {
                _adorner.AdornerDropState = DropState.CanDrop;
                switch (_adorner.AdornerDropState)
                {
                    case DropState.CanDrop:
                        try
                        {
                            ((Storyboard)_adorner.Resources["canDrop"]).Completed += (s, args) =>
                            {
                                _adornerLayer.Children.Clear();
                                _adornerLayer.Visibility = Visibility.Collapsed;
                            };
                            ((Storyboard)_adorner.Resources["canDrop"]).Begin(_adorner);

                            // Added position in drop target
                            //Point pos = ee.GetPosition((IInputElement)_dropTarget);
                            Point temp = PieMenuHitTestEventArgs.FinalPt;
                            Point pos = new Point(temp.X - 30, temp.Y - 30);
                            if (ItemDropped != null)
                                ItemDropped(_adorner, new DragDropEventArgs(_draggedData, pos, _dropTarget));
                        }
                        catch (Exception)
                        { }
                        break;
                    case DropState.CannotDrop:
                        try
                        {
                            Storyboard sb = _adorner.Resources["cannotDrop"] as Storyboard;
                            DoubleAnimation aniX = sb.Children[0] as DoubleAnimation;
                            aniX.To = _delta.X;
                            DoubleAnimation aniY = sb.Children[1] as DoubleAnimation;
                            aniY.To = _delta.Y;
                            sb.Completed += (s, args) =>
                            {
                                _adornerLayer.Children.Clear();
                                _adornerLayer.Visibility = Visibility.Collapsed;
                            };
                            sb.Begin(_adorner);
                        }
                        catch (Exception) { }
                        break;
                }
            }

            _draggedData = null;
            //_adornerLayer.PreviewMouseMove -= new MouseEventHandler(_adorner_MouseMove);
            //_adornerLayer.PreviewMouseUp -= new MouseButtonEventHandler(_adorner_MouseUp);
            _adornerLayer.StylusUp -= new StylusEventHandler(_adornerLayer_StylusUp);

            if (_adorner != null)
            {
                _adorner.ReleaseMouseCapture();
            }
            _adorner = null;
            //_mouseCaptured = false;
            _stylusCaptured = false;
        }
Пример #3
0
        public void DragSourcePieMenuPreviewMouseMove(object sender, StylusEventArgs e)
        {
            if (e.InAir)
                _draggedData = null;

            if (_draggedData != null)
            {
                //release the stylus like up event
                _draggedData = null;
                _stylusCaptured = false;
                if (_adorner != null)
                {
                    //_adorner.ReleaseStylusCapture();
                    _adornerLayer.Children.Remove(_adorner);
                }
            }

            _draggedData = (sender as FrameworkElement).DataContext;


            if (!_stylusCaptured && _draggedData != null)
            {
                // Only drag when user moved the mouse by a reasonable amount.
                if (DragDropHelper.IsMovementBigEnough(_initialMousePosition, e.GetPosition(_topUserControl)))
                {
                    try
                    {
                        _adorner = (DragDropAdornerBase)GetDragDropControl(sender as DependencyObject);
                        _adorner.DataContext = _draggedData;

                        _adorner.Opacity = 0.7;

                        _adornerLayer.Visibility = Visibility.Collapsed;

                        _adornerLayer.Children.Add(_adorner);

                        //_stylusCaptured = Stylus.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);
                        //_adornerLayer.StylusUp += new StylusEventHandler(_adornerLayer_StylusUp);
                    }
                    catch (Exception eee)
                    {
                        System.Diagnostics.Debug.Print(eee.ToString());
                        // bummer
                    }
                }
            }

        }