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

时间:2010-02-01 09:38:42

标签: c# wpf resize minimize maximize

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

  1. 正常尺寸为1024 * 768
  2. 用户可以最大化应用程序
  3. 用户可以最小化应用程序
  4. 用户可以恢复应用程序(1024 * 768)
  5. 用户无法通过拖动边框手动调整应用程序的大小。
  6. 没有任何ResizeMode满足所有这些要求。有什么办法吗?

2 个答案:

答案 0 :(得分:6)

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

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

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

    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);
    }

答案 1 :(得分:0)

您可以收听Window.SizeChanged事件,并在处理程序内手动将Width和Height设置回1027和768.它仍然允许用户拖动窗口的边缘以调整大小,但随后窗口返回到它的设置大小。这样做的缺点是,只要用户尝试调整大小,窗口就会出现“癫痫发作” - 这不是最令人讨厌的事情。最大限度地减少工作并最大限度地发挥作用。