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; } } } }
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); } } }
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; } } }
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); }