// Event raised on mouse down in the ZoomAndPanControl public static void MouseDown(object sender, MouseButtonEventArgs e,Panel p, ZoomAndPanControl z) { p.Focus(); Keyboard.Focus(p); mouseButtonDown = e.ChangedButton; origZoomAndPanControlMouseDownPoint = e.GetPosition(z); origContentMouseDownPoint = e.GetPosition(p); 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. z.CaptureMouse(); e.Handled = true; } }