Рассмотрите возможность отслеживания изменений состояния вашего окна WPF.Добавьте обработчик события StateChanged вашего окна и следите за шириной и высотой окна.
Вы можете отслеживать размер окна следующим образом:
public MainWindow() {
InitializeComponent();
_lastState = this.WindowState;
_initialWidth = this.ActualWidth;
_initialHeight = this.ActualHeight;
this.StateChanged += Window_StateChanged;
}
WindowState _lastState;
double _initialwidth, _initialHeight;
private void Window_StateChanged(object sender, EventArgs e)
{
if (this.WindowState != _lastState)
{
if (_lastState == WindowState.Minimized && this.WindowState == WindowState.Maximized){
this.Width = _initialWidth;
this.Height = _initialHeight;
}
_lastState = this.WindowState;
}
}
Примечаниеиспользование ActualHeight и ActualWidth.Фактические размеры окна будут известны после запуска InitializeComponent внутри его конструктора.Восстановленное или не минимизированное, как вы красноречиво выразились, окно - это окно, в котором состояние переходит от WindowState.Minimized к WindowState.Maximized.
Обратите внимание, что мы стараемся минимизировать объем кода в приложениях WPF, так как рекомендуется использовать MVVM.Однако вы можете подумать о создании класса поведения WPF для восстановления начального размера Window, в конце концов, это общее поведение.