Окно ActualTop, ActualLeft

Как правильно получить положение окна в WPF?

Вот некоторые попытки, которые я предпринял. Первая попытка, очевидная

Point GetPosition(Window win)
{
    return new Point(win.Top, win.Left);
}

, но это возвращает «неправильную» позицию, когда окно развернуто. Вторая попытка:

Point GetPosition(Window win)
{
    if (win.WindowState == WindowState.Maximized)
        return new Point(0, 0);
    else
        return new Point(win.Top, win.Left);
}

Почти там, но есть еще проблема: когда у вас есть два (или более) экрана и окно развернуто на втором экране, вы получаете позицию (0, 0), которая не отражает фактическое окно position.

Я заметил, что Window имеет закрытые члены _actualTop и _actualLeft, но не имеет публичного свойства для их раскрытия.

Как получить правильное значение?

5
задан Francesco De Vittori 30 August 2010 в 13:41
поделиться