恢复的WPF窗口

时间:2018-09-28 20:41:35

标签: c# wpf

我可以选择最小化启动我的主窗口。窗口设置为SizeToContent =“ WidthAndHeight”。当我单击以还原窗口时,它的打开大于初始WidthAndHeight。我在MainWindow.xaml.cs

中使用以下内容
   private void WindowStart()
    {
        if (LocalSystem.StartMinimized)
        {
            WindowState = WindowState.Minimized;
            ShowInTaskbar = true;
        }
        if (LocalSystem.StartOnTop)
        {
            Topmost = true;
        }
        Activate();
    }

1 个答案:

答案 0 :(得分:1)

考虑跟踪WPF窗口的状态变化。添加Window的StateChanged事件的事件处理程序,并跟踪Window的宽度和高度。

您可以像这样跟踪窗口的大小:

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的构造函数中运行后,将知道Window的实际尺寸。正如您雄辩地说的那样,还原或未最小化的窗口是状态从WindowState.Minimized到WindowState.Maximized的窗口。

请注意,由于最佳实践是使用MVVM,因此我们尝试将WPF应用程序中的代码减少到最少。您毕竟可以考虑创建一个WPF行为类来恢复Window的初始大小,毕竟这是一种常规行为。