我阅读了一些关于如何防止WPF应用程序最大化的答案,并且大多数都可以使用。
ResizeMode="CanMinimize"
工作正常。
但是,用户仍然可以转到任务管理器并从那里最大化窗口:
这会导致一些问题。
一个建议的解决方案是收听StateChanged
事件,如下所示:
this.StateChanged += new System.EventHandler((sender, eventArgs) =>
{
if (this.WindowState == System.Windows.WindowState.Maximized)
{
this.WindowState = System.Windows.WindowState.Normal;
}
}
这也有效,但它提供了一种“闪烁”的感觉。动画,窗口转到左上角,然后立即返回到它的原始位置。所以在某种程度上它起作用了,但它在眼睛上并不好看。
有没有办法在执行之前处理状态更改事件?像BeforeStateChange
答案 0 :(得分:0)
可能的解决方案是明确设置最大窗口大小。由于CanMinimize
模式暗示您无法调整窗口大小,因此您可以将其大小限制为:
<Window
MaxHeight="{Binding Height, RelativeSource={RelativeSource Self}}"
MaxWidth="{Binding Width, RelativeSource={RelativeSource Self}}">
<!-- ... -->
</Window>