Уведомление о закрытии интерфейса пользователя WPF

Я открываю окно WPF из приложения в трее. Я использую следующий код, чтобы открыть окно:

        if (gui == null)
        {
            gui = new App();
            gui.MainWindow = new mainWindow();
            gui.InitializeComponent();
            IsUIOpen = true;
        }
        else if (!IsUIOpen)
        {
            gui.InitializeComponent();
            gui.MainWindow.Show();
            gui.MainWindow = new mainWindow();
            IsUIOpen = true;
        }

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

Я пробовал следующее:

gui.Exit += new System.Windows.ExitEventHandler(settings_FormClosed);
gui.MainWindow.Closed += new EventHandler(settings_FormClosed);

Я также пыталсяgui.Deactivated, gui.SessionEnding, gui.MainWindow.Closing, gui.MainWindow.Deactivatedи, возможно, некоторые другие.

Когда пользователь закрывает окно, этот код вызывается из Shell.xaml:

    private void Cancel_Click(object sender, RoutedEventArgs e)
    {
        presenter.Close();
        this.Close();
    }

Я понимаю, что приложение статично, поэтому оно никогда не закроется, но один из этих обработчиков событий должен подключить меня к закрывающему событию.

В случае, если это полезно, поток выглядит следующим образом: TrayApp.cs - & gt; App.xaml - & gt; Shell.xaml

Мы ценим любые предложения. Заранее спасибо.

Ответы на вопрос(2)

Ваш ответ на вопрос