2014-09-28 139 views
0

我從另一個窗口調用一個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

回答

1

在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的更好方法。