当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;
}
手动状态更改
使用Windows UI停靠
如何在对接发生后使事件处理程序运行?
为了说清楚,我没有使用引用的Windows Docking,我正在使用Windows 7中的操作系统对接,您可以将其拖到屏幕的一侧并为您停靠。
答案 0 :(得分:1)
您是否尝试过ActualHeight \ ActualWidth?
编辑:(在此处移动答案) 在'StateChanged'之后调用'SizeChanged'事件,然后大小应该没问题 你可以更新那里的大小