Как я могу захватить события мыши, которые происходят за пределами окна (WPF)?

у меня естьWindow элемент, который имеетWindowStyle="None" а такжеAllowsTransparency="True"поэтому он не имеет строки заголовка и поддерживает прозрачность.

Я хочу, чтобы пользователь мог перемещать окно в любую позицию на экране, щелкая левой кнопкой мыши в любом месте окна и перетаскивая. Окно должно тянуться вместе с мышью, пока левая кнопка мыши нажата.

Мне удалось заставить эту функциональность работать с одним исключением: когда мышь перемещается за пределы окна (например, когда левая кнопка мыши была нажата около края окна и мышь перемещается быстро), окно больше не работает. захватывает положение мыши и не тащит вместе с мышью.

Вот код из кода, который я использую для выполнения работы:

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

Ответы на вопрос(3)

Ваш ответ на вопрос