/// <summary> /// Event raised on mouse down in the NetworkView. /// </summary> private void NetworkControl_MouseDown(object sender, MouseButtonEventArgs e) { NetworkView networkView = sender as NetworkView; networkView.Focus(); Keyboard.Focus(networkView); mouseButtonDown = e.ChangedButton; origZoomAndPanControlMouseDownPoint = e.GetPosition(zoomAndPanControl); origContentMouseDownPoint = e.GetPosition(networkView); if ((Keyboard.Modifiers & ModifierKeys.Shift) != 0 && (e.ChangedButton == MouseButton.Left || e.ChangedButton == MouseButton.Right)) { // Shift + left- or right-down initiates zooming mode. mouseHandlingMode = MouseHandlingMode.Zooming; } else if (mouseButtonDown == MouseButton.Left && (Keyboard.Modifiers & ModifierKeys.Control) == 0) { // // Initiate panning, when control is not held down. // When control is held down left dragging is used for drag selection. // After panning has been initiated the user must drag further than the threshold value to actually start drag panning. // mouseHandlingMode = MouseHandlingMode.Panning; } if (mouseHandlingMode != MouseHandlingMode.None) { // Capture the mouse so that we eventually receive the mouse up event. networkView.CaptureMouse(); e.Handled = true; } }