2010-09-20 5 views
5

Ich habe ein Elternfenster, das ein Kind-Fenster startet, nachdem einige Auswahl/Operation im Kind Fenster geschlossen ist und ich einige Informationen zurück zum Elternfenster (eine benutzerdefinierte Klasse Objekt), was ist der beste Weg, dies in WPF mit den Funktionen von WPF zu erreichen?Kommunikation zwischen Eltern und Kind Fenster in WPF

Antwort

5

Sie haben viele Möglichkeiten:

  • Sie eine benutzerdefinierte Ereignis in Ihrem Kind Fenster verwenden könnte, die das übergeordnete Fenster zu
  • Sie hört könnte einen Delegierten im Kindfenster definieren, das eine Methode in der übergeordneten verweist Fenster
  • Sie den Konstruktor für das Kind Fenster einen Verweis auf das übergeordnete Fenster zu übernehmen und ein Verfahren ändern könnte auf das übergeordnete Fenster aufrufen Verwendung dieser Referenz
  • Sie könnten möglicherweise die VisualTreeHelper-Klasse verwenden, das übergeordnete Fenster und Call Uhr zu bekommen ethode auf dieser Referenz
-1

Extrahiert aus this link:

Der einfachste Weg, den ich gefunden habe Daten von einem Kind Fenster zu einem Fenster Eltern zu übergeben, eine Anwendung breite Eigenschaft zu verwenden ist. Diese Eigenschaft ist ein Objekt, und ist nicht die eleganteste Form, um Daten von einem Kind Fenster an ein Elternteil zu übergeben, aber es ist die geringste Menge an Programmierung. Der beste Weg, dies zu tun, ist die Verwendung von get und set accessor properties.

erstellen Hauptfenster (Hauptfenster) Erstellen Sie ein untergeordnetes Fenster (in diesem Fall Passwort)

Im Hauptfenster muss das Kind Fenster innerhalb eines Schaltfläche klicken gezeigt, sagen wir, werden. Dieses Fenster würde eine Schaltfläche haben, um etwas zu tun, in diesem Fall ist es einen Datensatz aus der Datenbank zu löschen.

private void btnDelete_Click(object sender, RoutedEventArgs e) 
{ 
    Password passwordentry = new Password(); 
    passwordentry.ShowDialog(); 

    if (Application.Current.Properties["PassGate"].ToString() == "mypassword") 
    { 
     Code, or call to delete the record; 
    } 
    Application.Current.Properties["PassGate"] = ""; 
} 

Im Kindfenster (Passwort), ist die Eigenschaft für die Anwendung Satz ein Textfeld verwendet wird. Dies ist ein einfaches Fenster mit einem Textfeld namens PasswordTextBox und ein paar Schaltflächen wie Accept und Cancel.

private void AcceptButton_Click(object sender, RoutedEventArgs e) 
{ 
    Application.Current.Properties["PassGate"] = PasswordTextBox.Text; 
    this.Close(); 
} 
Verwandte Themen