Пример #1
0
        void HitTest(Point hitPoint)
        {
            if (_spriteTarget != null)
            {
                _spriteTarget.IsDragConnectionOver = false;
                _spriteTarget = null;
            }

            if (_jackTarget != null)
            {
                _jackTarget.IsConnectionOver = false;
                _jackTarget = null;
            }

            VisualTreeHelper.HitTest(_adornedElement,
                                     new HitTestFilterCallback(HitTestFilter),
                                     result => HitTestResultBehavior.Continue,
                                     new PointHitTestParameters(hitPoint));

            if (_adornedElement.InputHitTest(hitPoint) is DependencyObject inputElement)
            {
                var contentControl = VisualFinder.GetAncestor <ContentControl>(inputElement);
                if (contentControl != null)
                {
                    _spriteTarget = contentControl.DataContext as ISpriteVM;
                    if (_spriteTarget != null)
                    {
                        _spriteTarget.IsDragConnectionOver = true;
                    }
                }
            }
        }
Пример #2
0
        protected virtual void OnPreviewMouseLeftButtonDownCommand(MouseButtonEventArgs e)
        {
            var presenter = VisualFinder.GetAncestor <ContentPresenter>((DependencyObject)e.OriginalSource);

            if (presenter != null)
            {
                if (presenter.DataContext is IPalleteVM item)
                {
                    DragDrop.DoDragDrop(presenter, new DataObject(SpriteData.FORMAT_DRAG_DROP, item.Entity), DragDropEffects.Copy);
                }
            }
        }
Пример #3
0
        protected virtual void OnMoveJack(MouseEventArgs e)
        {
            if (e.LeftButton != MouseButtonState.Pressed)
            {
                _startPointConnector = null;
                return;
            }

            var jack = VisualFinder.GetAncestor <Jack>((DependencyObject)e.OriginalSource);

            if (_startPointConnector.HasValue && jack != null)
            {
                var adornerLayer = AdornerLayer.GetAdornerLayer(ActivityCanvas.Instance);
                if (adornerLayer != null)
                {
                    var adorner = new ConnectorAdorner(ActivityCanvas.Instance, _startPointConnector, jack, this);
                    adornerLayer.Add(adorner);
                    e.Handled = true;
                }
            }
        }
Пример #4
0
        HitTestFilterBehavior HitTestFilter(DependencyObject o)
        {
            if (o.GetType() == typeof(Jack))
            {
                _jackTarget = (Jack)o;
                if (ReferenceEquals(_jackTarget, _jackSource))
                {
                    return(HitTestFilterBehavior.ContinueSkipSelfAndChildren);
                }
                _jackTarget.IsConnectionOver = true;

                var contentControl = VisualFinder.GetAncestor <ContentControl>(_jackTarget);
                _spriteTarget = contentControl.DataContext as ISpriteVM;
                if (_spriteTarget != null)
                {
                    _spriteTarget.IsDragConnectionOver = true;
                }

                return(HitTestFilterBehavior.ContinueSkipSelfAndChildren);
            }

            return(HitTestFilterBehavior.Continue);
        }