在WPF中启用最大化,最小化和还原窗口(禁用手动resize)
我需要在我的应用程序(C#WPF应用程序)上启用以下内容:
- 正常尺寸为1024 * 768
- 用户可以最大化应用程序
- 用户可以最小化应用程序
- 用户可以恢复应用程序(1024 * 768)
- 用户无法通过拖动边框手动调整应用程序的大小。
没有任何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时窗口都会出现“占用” – 这不是最令人讨厌的东西。 最大限度地减少工作并最大限度地发挥作用。