5

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

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

没有任何ResizeMode一个可以满足所有这些要求。有什么办法可以做吗?

4

2 回答 2

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);
    }
于 2010-02-07T08:59:11.090 回答
0

您可以监听 Window.SizeChanged 事件,并在您的处理程序中手动将 Width 和 Height 设置回 1027 和 768。它仍然允许用户拖动窗口的边缘来调整大小,但随后窗口会返回到它的设置大小。这样做的缺点是,每当用户尝试调整大小时,窗口就会“抓住”——这不是最漂亮的东西。最小化和最大化正常工作。

于 2010-02-02T12:21:16.547 回答