¿Cómo puedo capturar eventos del mouse que ocurren fuera de una ventana (WPF)?

tengo unWindow elemento que tieneWindowStyle="None" yAllowsTransparency="True"Por lo tanto, no tiene barra de título y soporta transparencia.

Quiero que el usuario pueda mover la ventana a cualquier posición en la pantalla haciendo clic izquierdo en cualquier lugar dentro de la ventana y arrastrando. La ventana debe arrastrarse junto con el mouse mientras se presiona el botón izquierdo del mouse.

Pude lograr que esta funcionalidad funcionara con una excepción: cuando el mouse se mueve fuera de la ventana (como cuando se presionó el botón izquierdo del mouse cerca del borde de la ventana y el mouse se movió rápidamente), la ventana ya no captura la posición del mouse y no arrastra junto con el mouse.

Aquí está el código del código subyacente que utilizo para hacer el trabajo:

public Point MouseDownPosition { get; set; }
public Point MousePosition { get; set; }
public bool MouseIsDown { get; set; }

private void window_MyWindowName_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    MouseDownPosition = e.GetPosition(null);
    MouseIsDown = true;
}

private void window_MyWindowName_MouseMove(object sender, MouseEventArgs e)
{
    if (MouseIsDown)
    {
        MousePosition = e.GetPosition(null);
        Left += MousePosition.X - MouseDownPosition.X;
        Top += MousePosition.Y - MouseDownPosition.Y;
    }
}

private void window_MyWindowName_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    MouseIsDown = false;
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta