/// <summary> /// Event raised on mouse down in the ZoomAndPanControl. /// </summary> protected void zoomAndPanControl_MouseDown(object sender, MouseButtonEventArgs e) { content.Focus(); Keyboard.Focus(content); mouseButtonDown = e.ChangedButton; origZoomAndPanControlMouseDownPoint = e.GetPosition(ZoomAndPanControl); origContentMouseDownPoint = e.GetPosition(content); 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) { // Just a plain old left-down initiates panning mode. mouseHandlingMode = MouseHandlingMode.Panning; } if (mouseHandlingMode != MouseHandlingMode.None) { // Capture the mouse so that we eventually receive the mouse up event. ZoomAndPanControl.CaptureMouse(); e.Handled = true; } }