/// <summary> /// Event raised when the user has started to drag out a connection. /// </summary> private void networkControl_ConnectionDragStarted(object sender, ConnectionDragStartedEventArgs e) { var draggedOutConnector = (ConnectorViewModel)e.ConnectorDraggedOut; var curDragPoint = Mouse.GetPosition(networkControl); // // Delegate the real work to the view model. // var connection = this.ViewModel.ConnectionDragStarted(draggedOutConnector, curDragPoint); // // Must return the view-model object that represents the connection via the event args. // This is so that NetworkView can keep track of the object while it is being dragged. // e.Connection = connection; }
/// <summary> /// Event raised when the user starts to drag a connector. /// </summary> private void ConnectorItem_DragStarted(object source, ConnectorItemDragStartedEventArgs e) { this.Focus(); e.Handled = true; this.IsDragging = true; this.IsNotDragging = false; this.IsDraggingConnection = true; this.IsNotDraggingConnection = false; this.draggedOutConnectorItem = (ConnectorItem)e.OriginalSource; var nodeItem = this.draggedOutConnectorItem.ParentNodeItem; this.draggedOutNodeDataContext = nodeItem.DataContext != null ? nodeItem.DataContext : nodeItem; this.draggedOutConnectorDataContext = this.draggedOutConnectorItem.DataContext != null ? this.draggedOutConnectorItem.DataContext : this.draggedOutConnectorItem; // // Raise an event so that application code can create a connection and // add it to the view-model. // ConnectionDragStartedEventArgs eventArgs = new ConnectionDragStartedEventArgs(ConnectionDragStartedEvent, this, this.draggedOutNodeDataContext, this.draggedOutConnectorDataContext); RaiseEvent(eventArgs); // // Retrieve the the view-model object for the connection was created by application code. // this.draggingConnectionDataContext = eventArgs.Connection; if (draggingConnectionDataContext == null) { // // Application code didn't create any connection. // e.Cancel = true; return; } }