【发布时间】:2017-09-07 16:56:25
【问题描述】:
我阅读了一些关于如何防止 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
【问题讨论】:
-
我认为没有 P-invoke 这是不可能的:/
-
很抱歉发布了无用的 cmets,但是当用户决定竭尽全力(TaskManager)来克服您的预期布局时,我真的不会担心“眼睛很漂亮”。您应该确定用户尝试最大化您的窗口是否是错误的(提示:用户永远不会错,但通常是一无所知!)或者您是否错误地决定了与用户不愉快的窗口大小超大字体的windows设置。