在WPF中启用最大化,最小化和还原窗口(禁用手动resize)

我需要在我的应用程序(C#WPF应用程序)上启用以下内容:

  1. 正常尺寸为1024 * 768
  2. 用户可以最大化应用程序
  3. 用户可以最小化应用程序
  4. 用户可以恢复应用程序(1024 * 768)
  5. 用户无法通过拖动边框手动调整应用程序的大小。

没有任何ResizeMode满足所有这些要求。 有什么办法吗?

我终于找到了一个相对不错的解决方案。

我们的想法是覆盖窗口的OnStateChanged事件,取消Min / Max约束并刷新它。

如果窗口没有最大化,我们只需应用最小/最大约束

  protected override void OnStateChanged(EventArgs e) { if (WindowState == WindowState.Maximized) { MinWidth = 0; MinHeight = 0; MaxWidth = int.MaxValue; MaxHeight = int.MaxValue; if (!m_isDuringMaximizing) { m_isDuringMaximizing = true; WindowState = WindowState.Normal; WindowState = WindowState.Maximized; m_isDuringMaximizing = false; } } else if (!m_isDuringMaximizing) { MinWidth = 1024; MinHeight = 768; MaxWidth = 1024; MaxHeight = 768; } base.OnStateChanged(e); } 

您可以侦听Window.SizeChanged事件,并在处理程序内手动将Width和Height设置回1027和768.它仍允许用户拖动窗口的边缘以resize,但随后窗口将返回其设置大小。 这样做的缺点是每当用户尝试resize时窗口都会出现“占用” – 这不是最令人讨厌的东西。 最大限度地减少工作并最大限度地发挥作用。