Получите минимизировать щелчок окна окна WPF - PullRequest
15 голосов
/ 02 июня 2009

Как получить событие сворачивания окна в окне WPF?

Ответы [ 3 ]

28 голосов
/ 02 июня 2009

Есть событие под названием StateChanged, которое (из справки) выглядит так, как будто оно может делать то, что вы хотите.

Происходит, когда WindowState окна изменения свойств.

В справке говорится, что она поддерживается только в .NET 3.0 и 3.5 под Vista, но я только что попробовал ее на XP, и она срабатывает, когда окно свернуто, развернуто и восстановлено. Однако, из моего тестирования, он запускает после состояние изменилось, поэтому, если вы хотите что-то сделать до того, как окно свернуто, это может быть не тот подход, который вам нужен.

Вам нужно проверить фактическое состояние, чтобы убедиться, что оно правильное.

    private void Window_StateChanged(object sender, EventArgs e)
    {
        switch (this.WindowState)
        {
            case WindowState.Maximized:
                MessageBox.Show("Maximized");
                break;
            case WindowState.Minimized:
                MessageBox.Show("Minimized");
                break;
            case WindowState.Normal:
                MessageBox.Show("Normal");
                break;
        }
    }

Очевидно, что если бы я просто распечатывал состояние, я бы использовал this.WindowState.ToString();)

Следующее должно быть добавлено к определению XAML вашего окна Visual Studio:

StateChanged="Window_StateChanged"
1 голос
/ 02 июня 2009

В дополнение к ответу Шобана ...

Вы можете использовать событие «Деактивировано» в Window, вы даже можете использовать событие StateChange, как показано ниже

private void Window_Deactivated(object sender, EventArgs e)
{
      if(this.WindowState== WindowState.Minimized)
           // Do your stuff

}

это поможет ....

0 голосов
/ 02 июня 2009

Извините, это не про WPF, так как я мало работал с WPF. Но еще одна вещь, которую вы можете сделать, это проверить свойство Windowstate во время события Resized формы. И если он равен FormWindowState.Minimized, то кнопка минимизации нажата (?); -)

...