从WPF中的页面内调用公共MainWindow函数

Har*_*Boy 3 c# wpf xaml

我有一个WPF应用程序,它有一个主窗口和几个我导航到的页面,如下所示:

例如,从一页到另一页,我使用:

NavigationService.Navigate(new MyPage1());
Run Code Online (Sandbox Code Playgroud)

从我的主窗口显示我使用的页面:

_mainFrame.Navigate(new PageHome());
Run Code Online (Sandbox Code Playgroud)

我在MainWindow上有一个公共函数,我想从内页调用.

我该怎么做呢??

Sna*_*ger 7

您不应该直接调用该方法.

您应该做的是在您的页面中引发一个事件并让MainWindow订阅该事件.然后,该事件处理程序可以调用相关方法.

在PageHome:

public event EventHandler SomethingHappened;
private void MakeSomethingHappen(EventArgs e){
    if(SomethingHappened != null){
        SomethingHappened(this, e);
    }
}
Run Code Online (Sandbox Code Playgroud)

在MainWindow:

pageHome.SomethingHappened += new EventHandler(pageHome_SomethingHappened);

void pageHome_SomethingHappened(object sender, EventArgs e){
     MyMethod();
}
Run Code Online (Sandbox Code Playgroud)


小智 5

以下解决方案适用于我从另一个页面调用 MainWindow 函数;

((MainWindow)System.Windows.Application.Current.MainWindow).FunctionName(params);
Run Code Online (Sandbox Code Playgroud)