2014-09-28 6 views
0

다른 창에서 하나의 MainWindow 함수 호출에 문제가 있습니다.다른 창에서 함수 호출

4 개의 창 : MainWindow, Window1, Window2 및 Window3. MainWindow는 Window1을 열고 Window1은 window2를 열고 Window2는 Window3을 엽니 다. Window1과 Window3에서 MainWindow 함수를 호출하고 싶습니다. Window1에서이 함수를 호출 할 수 있지만 Window3에서이 작업을 수행하는 방법을 모르겠습니다.

번호 : 번째 윈도에서 MainWindow를 함수 호출

MainWindow를

:

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

번째 윈도 :

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

ruLanguage(); - 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를 사용하는 더 좋은 방법입니다.