Включить максимизировать, свернуть и восстановить окно в WPF (ручное изменение размера отключено) - PullRequest
5 голосов
/ 01 февраля 2010

Мне нужно включить следующее в моем приложении (приложение C # WPF):

  1. имеют нормальный размер 1024 * 768
  2. Пользователь может развернуть приложение
  3. Пользователь может свернуть приложение
  4. Пользователь может восстановить приложение (1024 * 768)
  5. Пользователь не может вручную изменить размер приложения, перетаскивая его границу.

Не существует ResizeMode, который удовлетворяет всем этим требованиям. Есть ли способ сделать?

Ответы [ 2 ]

6 голосов
/ 07 февраля 2010

Я наконец нашел относительно приличное решение.

Идея состоит в том, чтобы переопределить событие 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);
    }
0 голосов
/ 02 февраля 2010

Вы можете прослушать событие Window.SizeChanged, и в вашем обработчике вручную установить Width и Height обратно на 1027 и 768. Он по-прежнему позволяет пользователю перетаскивать края окна для изменения размера, но затем окно возвращается к установленному размеру,Недостатком этого является то, что окно имеет «захват» всякий раз, когда пользователь пытается изменить размер - не самая красивая вещь для просмотра.Сверните и разверните работу как обычно.

...