Como posso capturar eventos do mouse que ocorrem fora de uma janela (WPF)?

eu tenho umWindow elemento que temWindowStyle="None" eAllowsTransparency="True", portanto, não tem barra de título e suporta transparência.

Eu quero que o usuário seja capaz de mover a janela para qualquer posição na tela, clicando com o botão esquerdo em qualquer lugar dentro da janela e arrastando. A janela deve arrastar junto com o mouse enquanto o botão esquerdo do mouse estiver pressionado.

Consegui que essa funcionalidade funcionasse com uma exceção: quando o mouse se move para fora da janela (por exemplo, quando o botão esquerdo do mouse é pressionado perto da borda da janela e o mouse é movido rapidamente), a janela não mais captura a posição do mouse e não arrasta junto com o mouse.

Aqui está o código do code-behind que eu uso para fazer o trabalho:

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;
}

questionAnswers(3)

yourAnswerToTheQuestion