我有一个方法,当 WindowState 使用 Window.StateChange 更改时,该方法会接收窗口的高度和宽度,但是当我使用 MS Windows 停靠来停靠窗口时,应用程序会检测到更改,运行事件处理程序,然后停靠并给我错误的窗口高度/宽度。
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 Docking
- Window_StateChanged() 调用
- 窗口状态更改
如何使事件处理程序在停靠发生后运行?
为了清楚起见,我没有使用引用的Windows扩展坞,而是使用Windows 7中的操作系统停靠,您可以在其中拖动到屏幕的一侧,它会为您停靠。
你试过实际高度\实际宽度吗?
编辑:(将答案移至此处)在"状态更改"之后调用"SizeChanged"事件,然后大小应该没问题您可以在那里更新大小