/// <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; } } } }
/// <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."); }