我需要在我的应用程序(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);
        }
    

    09-12 06:21