Wie ruft man die Methode des WPF-Hauptfensters aus dem modalen Fenster auf?
(Eigentlich möchte ich einen Timer der MainWindow.xaml.cs starten, wenn ich ein Modellfenster schließe.)
Danke!
Was Sie tun können, ist, bevor Sie Ihr zweites Fenster öffnen, das Hauptfenster als Eigentümer zuweisen, dann im modalen Fenster die Owner-Eigenschaft aufrufen, sie in ein MainWindow-Objekt umwandeln und die Methode ausführen können.
%Vor%Ich würde vorschlagen, diese Art von Muster ist ein Code-Geruch.
Wenn das Ziel darin besteht, Informationen vom modalen zum übergeordneten Element weiterzuleiten, sollten Sie Eigenschaften im modalen Fenster besser verfügbar machen und nach dem Schließen diese Werte lesen und alle erforderlichen Aktionen im übergeordneten Element ausführen.
Wenn Sie Informationen vom übergeordneten Element an das modale übergeben möchten, übergeben Sie sie an den Konstruktor oder an die öffentlichen Eigenschaften, bevor Sie ShowDialog().
Es gibt viele Möglichkeiten, dies zu tun.
Sie könnten den Konstruktor des modalen Fensters überladen, so dass Sie einen Verweis auf diese Funktion oder das Hauptfenster übergeben können. Oder fügen Sie dem Fenster eine Eigenschaft hinzu.
Sie können den Timer auch in der nächsten Zeile des Hauptfenstercodes starten, der das modale Fenster anzeigt.
Wenn dieses Modellfenster von MainWindow
geöffnet wird, sagen wir beispielsweise
modalWindow.ShowDialog()
Es genügt, den Code nach diesem Aufruf hinzuzufügen, und er wird ausgeführt, nachdem das modale Fenster geschlossen wurde.
Wenn das modale Fenster an anderer Stelle geöffnet wird, aber beim Schließen den Code in einem vollständig nicht verwandten Teil ausführen soll, können Sie beispielsweise Befehle oder RelayCommand (Art des direkten Anruf delegieren).
Hoffe, das hilft.
Sie können einen Event-Handler an das "Closing" -Ereignis des modalen Dialogs anhängen, das im Hauptprogramm ausgeführt würde, wenn das Dialogfeld dieses Ereignis auslöst.