Notificação quando a interface do usuário do WPF fecha

Eu estou abrindo uma janela do WPF de um aplicativo de bandeja. Eu uso o seguinte código para abrir a janela:

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

Eu preciso executar a interface do usuário do nível de aplicativo porque ele usa um dicionário de recursos. O problema é que eu preciso executar o código quando a janela é fechada pelo usuário, mas nenhum dos manipuladores de eventos parece estar me notificando.

Eu tentei o seguinte:

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

Eu também tenteigui.Deactivated, gui.SessionEnding, gui.MainWindow.Closing, gui.MainWindow.Deactivatede provavelmente alguns outros.

Quando o usuário fecha a janela, esse código é chamado de Shell.xaml:

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

Eu percebo que o App é estático, portanto ele nunca será fechado, mas um desses manipuladores de eventos deve me conectar a um evento de fechamento.

Caso seja útil, o fluxo é o seguinte: TrayApp.cs -> App.xaml -> Shell.xaml

Qualquer sugestão seria apreciada. Desde já, obrigado.

questionAnswers(2)

yourAnswerToTheQuestion