Öffnen Sie das WPF-Einstellungsfenster in Forms App [duplizieren]

Mögliche Duplikate:
Benachrichtigung beim Schließen der WPF-Benutzeroberfläche

Ich habe vorher eine sehr ähnliche Frage gestellt, aber ich habe keine brauchbare Antwort bekommen. Ich hoffe, dass jemand da draußen mir helfen kann.

Ich habe eine vorhandene Tray-App als Windows Form-App programmiert. Ich habe ein vorhandenes Einstellungsformular als WPF programmiert.

Die Tray-App muss in der Lage sein, * die Einstellungs-App n-mal zu öffnen, wobei immer nur eine Instanz geöffnet ist. * Eine Benachrichtigung zu erhalten, wenn der Benutzer die Einstellungs-App schließt.

Die Einstellungs-App verwendet ein ResourceDictionary, was meines Erachtens bedeutet, dass es über App.xaml gestartet werden muss.

Ich kann das Fenster "Einstellungen" mit dem folgenden Code einmal öffnen und das Fach benachrichtigen, wenn es heruntergefahren wird. Es kann jedoch nicht erneut geöffnet werden.

        if (gui == null)
        {
            //shell = new mainWindow();
            //shell.CloseEvent += settings_FormClosed;

            gui = new App();
            //gui.ShutdownMode = ShutdownMode.OnExplicitShutdown;
            gui.MainWindow = shell;
            gui.InitializeComponent();
            //gui.Run();
            gui.Exit += new System.Windows.ExitEventHandler(settings_FormClosed);

            IsUIOpen = true;
        }

Wenn ich die obigen Zeilen auskommentiere, kann ich das Abschlussereignis abfangen und die Sichtbarkeit auf Ausgeblendet setzen. Wenn der Benutzer das nächste Mal Einstellungen auswählt, kann ich ihn wieder auf Sichtbar setzen. Beim ersten Öffnen von Settings wird jedoch das Exit-Ereignis nicht ausgelöst, und die Shell erhält nicht das gesamte ReferenceDictionary (oder verliert den Zugriff darauf), sodass das Fenster nicht ordnungsgemäß angezeigt wird.

Gibt es eine Möglichkeit, WPF über die App auszuführen und auf MainWindow zuzugreifen (was häufig null zu sein scheint und nicht dem Typ meines eigenen Fensters entspricht), sodass ein benutzerdefinierter Listener zu mainWindow hinzugefügt werden kann?

Alternativ gibt es eine Möglichkeit, die statische App zu entsorgen, sodass ich sie erneut instanziieren kann, wenn der Benutzer das nächste Mal auf Einstellungen klickt.

Ich weiß, dass es eine Möglichkeit geben muss, WPF dazu zu bringen, gut mit Win Forms zu spielen. Vielen Dank an alle, die versuchen zu helfen. Das hat mir große Kopfschmerzen bereitet.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage