Notificación cuando se cierra WPF UI

Estoy abriendo una ventana WPF desde una aplicación de bandeja. Utilizo el siguiente código para abrir la ventana:

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

Necesito ejecutar la IU desde el nivel de la aplicación porque usa un Diccionario de recursos. El problema es que necesito ejecutar código cuando el usuario cierra la ventana, pero ninguno de los controladores de eventos parece notificarme.

He probado lo siguiente:

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

También he intentadogui.Deactivated, gui.SessionEnding, gui.MainWindow.Closing, gui.MainWindow.Deactivated, y probablemente algunos otros.

Cuando el usuario cierra la ventana, este código se llama desde Shell.xaml:

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

Me doy cuenta de que la aplicación es estática, por lo que nunca se cerrará, pero uno de estos controladores de eventos debería conectarme a un evento de cierre.

En caso de que sea útil, el flujo es el siguiente: TrayApp.cs -> App.xaml -> Shell.xaml

Cualquier sugerencia sera apreciada. Gracias por adelantado.

Respuestas a la pregunta(2)

Su respuesta a la pregunta