Что-то вроде 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 на значение вашего свойства.
Установите флаг, чтобы вы проходили логику только один раз.