从主窗口触发页面中的事件

本文关键字:事件 窗口 | 更新日期: 2023-09-27 18:05:36

我有一个承载页面的窗口。当用户在关闭主窗口时单击取消时,我想在页面上触发一个事件。目前,我正在努力找出如何从窗口中触发页面上的事件。这是页面上的事件;

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实例时,你可以将主窗口的引用传递给它

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

在LoginPage的构造函数中,您可以添加事件处理程序

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

当你从主窗口的onclosing事件引发事件时,这个应该被调用。