Jaki jest poprawny sposób na odzyskanie pozycji okna w WPF?Okno ActualTop, ActualLeft
Oto kilka prób, które zrobiłem. Pierwsza próba, oczywiste, to oczywiste, ale to zwraca "złe" położenie, gdy okno jest zmaksymalizowane. Druga próba:
Point GetPosition(Window win)
{
if (win.WindowState == WindowState.Maximized)
return new Point(0, 0);
else
return new Point(win.Top, win.Left);
}
Prawie tam, ale wciąż jest problem: gdy masz dwie (lub więcej), ekrany, a okno jest zmaksymalizowane w drugim ekranie pojawi się (0, 0) stanowisko, że nie odzwierciedlają rzeczywistą pozycję okna.
Zauważyłem, że Window ma _actualTop i _actualLeft członków prywatnych, ale nie ma właściwości publicznej, aby je narazić.
W jaki sposób odzyskujesz poprawną wartość?
Dzięki Hans, P/Invoking GetWindowRect() faktycznie rozwiązuje problem. Nie za miły, ale działa zgodnie z oczekiwaniami. Dzięki jeszcze raz! –
Co jest nie tak z 'Point leftTop = this.PointToScreen (new Point (0, 0));'? – springy76
Poza tym, że nie jest to kod WPF, po prostu spróbuj i umieść pasek zadań po lewej stronie. –