2016-09-05 64 views
0

我有一個承載頁面的窗口。當用戶在關閉MainWindow時單擊取消時,我想在頁面上觸發一個事件。目前我正在努力研究如何在頁面窗口中觸發事件。這是頁面上的事件;從主窗口的頁面觸發事件

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

而這裏是當我想開火它(這個方法是在一個窗口,託管的頁面);

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; 
    } 
} 

我試過使用類似的東西;

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

到目前爲止沒有任何工作爲我。

+1

在將頁面添加到NavigationService之前,您是否可以將頁面實例作爲變量保存在Window中(如果您將窗口添加到窗口後面的代碼中)?保存所顯示的同一頁面的引用將允許您調用公共方法的頁面。 –

回答

0

當您創建LoginPage的新實例,你可以通過主窗口中的引用它

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

的LoginPage的構造函數裏面,你可以添加事件處理程序

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

當您從募集活動應該調用主窗口的onclosing事件。

相關問題