2016-09-05 1 views
0

Ich habe ein Fenster, das eine Seite hostet. Ich möchte ein Ereignis auf der Seite auslösen, wenn der Benutzer beim Schließen des MainWindow auf Abbrechen klickt. Im Moment kämpfe ich darum, wie ich das Ereignis auf der Seite von Window feuern kann. Hier ist die Veranstaltung auf der Seite;Feuerereignis in der Seite von Hauptfenster

public void OnChangeUserEvent() 
{ 
    var _employeeSelectionWindow = new EmployeeSelectionWindow(); 
    _employeeSelectionWindow.ReturnEmployeeDetails += LoadSelectedEmployeeAsLoggedInUser; 
    _employeeSelectionWindow.ShowDialog(); 
} 

Und hier ist, wenn ich es feuern möchte (diese Methode ist in einem Fenster, Hosting der Seite);

private void OnWindowClosed(object sender, System.ComponentModel.CancelEventArgs e) 
{ 
    var result = MessageBox.Show(@"Are you sure you want to exit the database?" + Environment.NewLine + "Click cancel to change user.", 
           "", MessageBoxButton.YesNoCancel); 
    if (result == MessageBoxResult.Yes) 
    { 
     Environment.Exit(0); 
    } 
    else if (result == MessageBoxResult.Cancel) 
    { 
     //Fire the event on the page here! 
     e.Cancel = true; 
    } 
    else 
    { 
     e.Cancel = true; 
    } 
} 

Ich habe versucht, etwas wie;

((LoginPage)e.Content).UserChangeEvent+= new EventHandler(MainWindow_NewRecordSaved); 

nichts hat für mich bisher funktioniert.

+1

Können Sie die Instanz der Seite als eine Variable in Window speichern, bevor Sie Seite zu NavigationService hinzufügen (wenn Sie die Seite im Fenster im Code hinter Windows hinzufügen)? Wenn Sie die Referenz für dieselbe angezeigte Seite speichern, können Sie die öffentliche Methode auf der Seite aufrufen. –

Antwort

0

Wenn Sie neue Instanz von Loginpage erstellen Sie anhand des Hauptfensters, um es

var loginPage = new LoginPage(this); //this indicate reference of main window. 

innerhalb der Loginpage Konstruktor übergeben können Sie Ereignishandler als

public LoginPage(MainWindowClass mainWin) 
{ 
    mainWin.UserChangeEvent += LocalEventHanlderMethod; 
} 

Wenn Sie erhöhen Ereignis von hinzufügen onclosing event des Hauptfensters sollte dieses aufgerufen werden.

Verwandte Themen