从另一个窗口调用函数

问题描述:

我从另一个窗口调用一个MainWindow函数时出现问题。从另一个窗口调用函数

我有4个窗口:MainWindow,Window1,Window2和Window3。 MainWindow打开Window1,Window1打开窗口2,Window2打开Window3。我想从Window1和Window3调用MainWindow函数。我可以从Window1调用这个函数,但是我不知道如何从Window3执行此操作。

代码:从窗口1调用主窗口函数:

主窗口:

private void button2_Click(object sender, RoutedEventArgs e) 
{ 
    Window1 w1 = new Window1(); 
    w1.Owner = this; 
    w1.ShowDialog(); 
} 

窗口1:

public void button_cancel_Click(object sender, RoutedEventArgs e) 
{   
    var myObject = this.Owner as MainWindow; 
    myObject.ruLanguage(); 
} 

ruLanguage(); - 从MainWindow调用的函数

+1

将它作为ctor参数传递。 – SLaks 2014-09-28 14:30:34

在WPF中,您可以通过Application.MainWindow属性访问主窗口。

public void button_cancel_Click(object sender, RoutedEventArgs e) 
{   
    var myObject = Application.MainWindow as MainWindow; 
    myObject.ruLanguage(); 
} 

你也可以在你的窗户定义属性,所以你可以像使用它们:

public MainWindow AppMainWindow { get; set; } 

private void button2_Click(object sender, RoutedEventArgs e) 
{ 
    Window1 w1 = new Window1(); 
    w1.Owner = this; 
    w1.AppMainWindow = this; 
    w1.ShowDialog(); 
} 

再通AppMainWindow值左右。

作为一个方面说明,你可能想重新考虑你的设计。了解MVVM模式,这是使用WPF的更好方法。