Wie ruft man die Methode des WPF-Hauptfensters aus dem modalen Fenster auf?

8

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!

    
Academy of Programmer 17.01.2012, 19:49
quelle

5 Antworten

15

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%     
Xtian Macedo 17.01.2012, 19:52
quelle
5
%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().

aufrufen     
Will 17.01.2012 20:00
quelle
2

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.

    
djdanlib 17.01.2012 19:52
quelle
2
  • 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.

    
Tigran 17.01.2012 19:53
quelle
0

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.

    
Guy Starbuck 17.01.2012 20:00
quelle

Tags und Links