我有一个WPF应用程序,主窗口应始终具有相同的大小。
因此我在构造函数中设置:
Width = 1024;
Height = 768;
ResizeMode = ResizeMode.NoResize;
WindowStyle = WindowStyle.None;
Top = screenBounds.Top;
Left = screenBounds.Left;
SizeToContent = SizeToContent.Manual;
在大多数情况下,screenBounds来自 Screen.PrimaryScreen 。
我还订阅了 SystemEvents.DisplaySettingsChanged ,并在屏幕分辨率发生变化时重做上述步骤。
在极少数情况下,这不起作用,应用程序窗口以不同的大小显示(例如768x556),但未触发屏幕分辨率更改事件。 我必须提到在这个系统上还运行一个VNC主机。 所以我的问题: - 什么会导致WPF窗口的大小更改,而屏幕分辨率更改事件未检测到该大小? - 我如何强制一直保持窗口的位置和大小相同?
答案 0 :(得分:1)
设置最大和最小高度和宽度值?
答案 1 :(得分:1)
我的猜测是手动设置代码中的大小,但如果你真的想阻止它发生,我建议你设置:
this.MaxHeight = this.MinHeight = 768;
this.MaxWidth = this.MinWidth = 1024;
编辑:
我发现SystemEvents.DisplaySettingsChanged会在用户更改“显示设置”时触发。尝试使用SystemEvents.DisplaySettingsChanging,它会在任何显示设置更改时触发。