Benachrichtigung beim Schließen der WPF-Benutzeroberfläche

Ich öffne ein WPF-Fenster über eine Tray-App. Ich benutze den folgenden Code, um das Fenster zu öffnen:

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

Ich muss die Benutzeroberfläche auf App-Ebene ausführen, da ein Ressourcenwörterbuch verwendet wird. Das Problem ist, ich muss Code ausführen, wenn das Fenster vom Benutzer geschlossen wird, aber keiner der Ereignishandler scheint mich zu benachrichtigen.

Ich habe Folgendes versucht:

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

Ich habe es auch versuchtgui.Deactivated, gui.SessionEnding, gui.MainWindow.Closing, gui.MainWindow.Deactivatedund wahrscheinlich einige andere.

Wenn der Benutzer das Fenster schließt, wird dieser Code von Shell.xaml aufgerufen:

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

Mir ist klar, dass die App statisch ist, so dass sie niemals geschlossen wird, aber einer dieser Event-Handler sollte mich mit einem Abschlussereignis verbinden.

Wenn es sinnvoll ist, lautet der Ablauf wie folgt: TrayApp.cs -> App.xaml -> Shell.xaml

Anregungen wäre dankbar. Danke im Voraus.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage