Wie kann ich die capture-Mausereignisse, die auftreten, die außerhalb von a (WPF) - Fenster?

Ich habe eine Window element, das WindowStyle="None" und AllowsTransparency="True", daher hat es keine Titelleiste und Transparenz unterstützt.

Ich möchte die Benutzer in der Lage sein zu verschieben das Fenster an eine beliebige position auf dem Bildschirm, indem Sie mit der linken Maustaste irgendwo innerhalb des Fensters und ziehen. Sollte das Fenster ziehen zusammen mit der Maus, solange Sie die linke Maustaste gedrückt wird.

War ich in der Lage, diese Funktionalität zu arbeiten, mit einer Ausnahme: beim bewegen der Maus außerhalb des Fensters (zum Beispiel, wenn die linke Maus-Knopf wurde gedrückt in der Nähe der Kante des Fensters und der Maus Recht schnell), wird das Fenster nicht mehr erfasst die position der Maus und nicht zusammen zu ziehen mit der Maus.

Hier ist der code aus der code-behind, die ich verwenden, um den job zu erledigen:

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;
}
Schreibe einen Kommentar