Mam element Window
, który ma WindowStyle="None"
i AllowsTransparency="True"
, dlatego nie ma paska tytułu i obsługuje przezroczystość.Jak mogę przechwytywać zdarzenia myszy, które występują poza oknem (WPF)?
Chcę, aby użytkownik mógł przesunąć okno do dowolnej pozycji na ekranie, klikając lewym przyciskiem myszy w dowolnym miejscu w oknie i przeciągając. Okno powinno przeciągać razem z myszą tak długo, jak wciśnięty jest lewy przycisk myszy.
Udało mi się uruchomić tę funkcjonalność z jednym wyjątkiem: gdy mysz porusza się poza Oknem (np. Gdy lewy przycisk myszy został naciśnięty w pobliżu krawędzi okna, a mysz jest przenoszona szybko), okno nie przechwytuje już pozycji myszy i nie przeciąga razem z myszą.
Oto kod z kodu źródłowego, że mogę używać, aby uzyskać zadanie:
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;
}