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