WPF应用程序窗口改变了它的大小

时间:2014-10-27 08:34:35

标签: c# wpf vnc

我有一个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窗口的大小更改,而屏幕分辨率更改事件未检测到该大小? - 我如何强制一直保持窗口的位置和大小相同?

2 个答案:

答案 0 :(得分:1)

设置最大和最小高度和宽度值?

答案 1 :(得分:1)

我的猜测是手动设置代码中的大小,但如果你真的想阻止它发生,我建议你设置:

this.MaxHeight = this.MinHeight = 768;  
this.MaxWidth =  this.MinWidth =  1024;

编辑:

我发现SystemEvents.DisplaySettingsChanged会在用户更改“显示设置”时触发。尝试使用SystemEvents.DisplaySettingsChanging,它会在任何显示设置更改时触发。