2016-09-05 1 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); 

これまでのところ私にとっては何も役に立たなかった。あなたがLoginPageの新しいインスタンスを作成する場合

+1

NavigationServiceにページを追加する前に、ウィンドウの変数としてページのインスタンスを保存することはできますか?(ウィンドウのコードビハインドでウィンドウにページを追加する場合)表示されている同じページの参照を保存すると、パブリックメソッドをページとして呼び出すことができます。 –

答えて

0

あなたはからイベントを発生させるときに、あなたが

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

としてイベントハンドラを追加することができますLoginPageのコンストラクタの内部でそれに

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

をメインウィンドウの参照を渡すことができますメインウィンドウのonclosingイベントを呼び出す必要があります。

関連する問題