/// <summary>
        ///
        /// </summary>
        protected override void OnMouseMove(MouseEventArgs e)
        {
            base.OnMouseMove(e);

            if (isDragging_)
            {
                // ドラッグ中
                Point  curMousePoint = e.GetPosition(ParentEditControl);
                Vector offset        = curMousePoint - lastMousePoint_;
                if (offset.X != 0.0 || offset.Y != 0.0)
                {
                    lastMousePoint_ = curMousePoint;
                    RaiseEvent(new ConnectorDraggingEventArgs(ConnectorDraggingEvent, this, offset.X, offset.Y));
                }
                e.Handled = true;
            }
            else if (isLeftMouseDown_)
            {
                // ドラッグ開始
                if (ParentEditControl != null
                    //&& ParentEditContol.EnableConnectionDragging
                    )
                {
                    Point  curMousePoint = e.GetPosition(ParentEditControl);
                    var    dragDelta     = curMousePoint - lastMousePoint_;
                    double dragDistance  = Math.Abs(dragDelta.Length);
                    if (dragDistance > DragThreshold)
                    {
                        var eventArgs = new ConnectorDragStartedEventArgs(ConnectorDragStartedEvent, this);
                        RaiseEvent(eventArgs);

                        if (eventArgs.Cancel)
                        {
                            isLeftMouseDown_ = false;
                            return;
                        }

                        isDragging_ = true;
                        e.Handled   = true;
                    }
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// ドラッグ開始
        /// </summary>
        private void ConnectorItem_DragStarted(object sender, ConnectorDragStartedEventArgs e)
        {
            // フォーカス取得
            Focus();

            var ctrl = e.OriginalSource as ConnectorControl;

            if (ctrl == null)
            {
                return;
            }

            var position = Mouse.GetPosition(ctrl.ParentEditControl);

            // ノードとコネクタのコンテキストを入れてイベント起動
            var eventArgs = new ConnectionDragStartedEventArgs(ConnectionDragStartedEvent, this,
                                                               ctrl.ParentNodeControl.DataContext, ctrl.DataContext, position);

            RaiseEvent(eventArgs);

            // ドラッグ中のリンクオブジェクトを保持
            draggingLinkModel_ = eventArgs.Connection;
            //Console.WriteLine("Drag started.");
        }