Enable Maximize, Minimize and Restore Window in WPF (Manual Resize is disable)

╄→尐↘猪︶ㄣ 提交于 2019-11-29 04:52:21
Nir

I've finally found a relatively decent solution.

The idea is to overide the OnStateChanged event of the window, cancel the Min/Max constraints and refresh it.

If the window is not maximized, we simply apply back the Min/Max constraints

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

You can listen to the Window.SizeChanged event, and inside your handler manually set Width and Height back to 1027 and 768. It still allows the user to drag the window's edges to resize, but then the window returns to it's set size. The drawback of this is that the window has a "seizure" whenever the user tries resizing--not the prettiest thing to see. Minimize and Maximize work as normal.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!