防止任务管理器(WPF应用程序)的最大化

时间:2017-09-07 06:17:57

标签: c# wpf

我阅读了一些关于如何防止WPF应用程序最大化的答案,并且大多数都可以使用。

     ResizeMode="CanMinimize"

工作正常。

但是,用户仍然可以转到任务管理器并从那里最大化窗口:

enter image description here

这会导致一些问题。

一个建议的解决方案是收听StateChanged事件,如下所示:

this.StateChanged += new System.EventHandler((sender, eventArgs) =>
{
   if (this.WindowState == System.Windows.WindowState.Maximized)
   {
      this.WindowState = System.Windows.WindowState.Normal;
   }
}

这也有效,但它提供了一种“闪烁”的感觉。动画,窗口转到左上角,然后立即返回到它的原始位置。所以在某种程度上它起作用了,但它在眼睛上并不好看。

有没有办法在执行之前处理状态更改事件?像BeforeStateChange

这样的东西

1 个答案:

答案 0 :(得分:0)

可能的解决方案是明确设置最大窗口大小。由于CanMinimize模式暗示您无法调整窗口大小,因此您可以将其大小限制为:

<Window
    MaxHeight="{Binding Height, RelativeSource={RelativeSource Self}}"
    MaxWidth="{Binding Width, RelativeSource={RelativeSource Self}}">
    <!-- ... -->
</Window>