Что-то вроде RestoreBounds для WindowState

У меня есть приложение, которое запускается свернутым.

Я могу установить RestoreBounds, чтобы установить, какой размер будет восстанавливать окно, когда пользователь восстанавливает его.

Но как я могу установить, должна ли форма восстанавливаться до максимального или нормального состояния? Нормальный по умолчанию. Я хотел бы что-то вроде RestoreWindowState.

Могу ли я сделать это с помощью API как-то?

1 ответ

Из моего опыта, Window.RestoreBounds всегда даст вам окончательные "нормальные" размеры вашего окна, и Window.WindowState всегда даст вам окончательное состояние окна (макс, мин, нормальный). Независимо от того, в каком состоянии вы находитесь, вы всегда можете просто сохранить значения RestoreBounds и WindowState и вручную установить размеры / состояние окна.

Вот как я это сделал (и я знаю, что восстановление не чистое, но мне все равно):

private class WindowStatus
{
    private WindowState state;
    private Rect restoreBounds;

    public WindowStatus(Window window)
    {
        state = window.WindowState;
        restoreBounds = window.RestoreBounds;
    }

    public void Restore(Window window)
    {
        window.WindowState = state;
        window.Height = restoreBounds.Height;
        window.Width = restoreBounds.Width;
        window.Left = restoreBounds.Left;
        window.Top = restoreBounds.Top;                      
    }

}

Разве вы не можете просто добавить и управлять этим свойством самостоятельно?

Добавьте собственность к своей форме.
Переопределите OnClientSizeChanged и проверьте, не изменилось ли состояние окна с Minimized.
Если это так, установите WindowState на значение вашего свойства.
Установите флаг, чтобы вы проходили логику только один раз.

Другие вопросы по тегам