Jak najlepiej wyświetlić okno WPF w lokalizacji myszy (w lewym górnym rogu myszy)?

Odkryłem, że to działa CZĘŚĆ czasu, dziedzicząc punkt myszy Windows Forms i odejmując wysokość i szerokość mojego okna, aby ustawić lewą i górną (ponieważ rozmiar mojego okna jest stały):

MyWindowObjectThatInheritsWindow window = new MyWindowObjectThatInheritsWindow();
System.Windows.Point mouseLocation = GetMousePositionWindowsForms();
window.Left = mouseLocation.X - 300;
window.Top = mouseLocation.Y - 240;
window.Show();

Edytuj: Oto kod do uzyskania pozycji myszy ...

public System.Windows.Point GetMousePositionWindowsForms()
{
    System.Drawing.Point point = System.Windows.Forms.Control.MousePosition;
    return new System.Windows.Point(point.X, point.Y);
}

Zwróć uwagę, że działa to poprzez umieszczenie dolnej prawej krawędzi okna w lewym górnym rogu kursora myszy. Ale to zrywa dla różnych rozdzielczości ekranu, a może wielu monitorów z różnymi rozdzielczościami? Jeszcze go nie zawęziłem, ale właśnie wypróbowałem ten sam kod na innym komputerze i wygląda na to, że pojawia się okno nie w lewym górnym rogu kursora myszy, ale w lewym dolnym rogu i dobrej odległości minęło to ...

Powinienem prawdopodobnie dodać moje rozmiary okien do zawartości, szerokości i wysokości, więc nie mogę po prostu użyć właściwości ActualWidth i ActualHeight, ponieważ nie są one dostępne. Być może problem polega na poprawieniu rozmiaru? Czy istnieje jakiś sposób, aby to zrobić? Wiem na pewno, że 300 i 240 są poprawne, zgodnie z moim głównym komputerem, z dwoma monitorami o rozdzielczości 1920x1080, ponieważ obliczyłem szerokości i wysokości wszystkich obiektów w moim oknie, które wyraźnie określiłem. Edycja: właśnie próbowałem jawnie ustawić wysokość i szerokość na 240/300, aby upewnić się, że okno nie ma już rozmiaru do zawartości, a ja nadal mam ten problem podczas odejmowania rzeczywistej wysokości i szerokości!

Jakieś pomysły?

questionAnswers(3)

yourAnswerToTheQuestion