Powiadomienie o zamknięciu interfejsu WPF

Otwieram okno WPF z aplikacji na tacy. Do otwarcia okna używam następującego kodu:

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

Muszę uruchomić interfejs użytkownika z poziomu aplikacji, ponieważ używa on słownika zasobów. Problem polega na tym, że muszę uruchomić kod, gdy okno jest zamknięte przez użytkownika, ale żadna z procedur obsługi zdarzeń wydaje się mnie nie powiadamiać.

Próbowałem:

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

Próbowałem teżgui.Deactivated, gui.SessionEnding, gui.MainWindow.Closing, gui.MainWindow.Deactivatedi prawdopodobnie kilka innych.

Gdy użytkownik zamyka okno, ten kod jest wywoływany z Shell.xaml:

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

Zdaję sobie sprawę, że aplikacja jest statyczna, więc nigdy się nie zamknie, ale jedna z tych procedur obsługi zdarzeń powinna mnie podłączyć do zdarzenia zamykającego.

W przypadku, gdy jest to przydatne, przepływ jest następujący: TrayApp.cs -> App.xaml -> Shell.xaml

Wszelkie sugestie będą mile widziane. Z góry dziękuję.

questionAnswers(2)

yourAnswerToTheQuestion