Как я могу захватить события мыши, которые происходят за пределами окна (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;
}