0

我有一个方法可以在 WindowState 随 Window.StateChanged 更改时获取窗口的高度和宽度,但是当我使用 MS Windows 停靠来停靠 Window 时,应用程序检测到更改,运行事件处理程序,然后停靠并给了我错误的窗口高度/宽度。

 private void Window_Loaded(object sender, RoutedEventArgs e) {
      Window.StateChanged += new EventHandler(Window_StateChanged);
 }

 void Window_StateChanged(object sender, EventArgs e) {
      EnvironmentalVariables.Instance.WindowHeight = Application.Current.MainWindow.Height - EnvironmentalVariables.MENUBARHEIGHT;
      EnvironmentalVariables.Instance.WindowWidth = Application.Current.MainWindow.Width - EnvironmentalVariables.TREEWIDTH - 55;
 }

手动状态更改

  • 窗口状态更改
  • Window_StateChanged() 调用

使用 Windows UI 对接

  • Window_StateChanged() 调用
  • 窗口状态更改

如何使事件处理程序在对接发生后运行?

为了清楚起见,我没有使用引用的 Windows 对接,我使用的是 Windows 7 中的操作系统对接,您可以将其拖到屏幕的一侧并为您对接。

4

1 回答 1

1

你试过 ActualHeight\ActualWidth 吗?

编辑:(将答案移至此处)在“StateChanged”之后调用“SizeChanged”事件,大小应该没问题,然后您可以在那里更新大小

于 2012-08-14T12:30:54.017 回答