2014-09-28 2 views
0

У меня проблема с вызовом одной функции MainWindow из других окон.Функция вызова из другого окна

У меня есть 4 окна: MainWindow, Window1, Window2 и Window3. MainWindow открыть Window1, Window1 открыть окно2 и Window2 открыть Window3. Я хочу вызвать функцию MainWindow из Window1 и Window3. Я могу вызвать эту функцию из Window1, но я не знаю, как это сделать из Window3.

Код: вызов функции MainWindow из window1:

MainWindow:

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

Window1:

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

ruLanguage(); - functon для вызова из MainWindow

+1

Передайте его как параметр ctor. – SLaks

ответ

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.