2016-07-20 101 views
0

我有一個窗口「w」與幾個控件和一個框架「f」。我使用頁面「p1,p2,...」替換「f」。我想從「p1」訪問「w」的控件。我怎樣才能做到這一點?如何從WPF的子頁面訪問父窗口的控件?

「w.xaml」:

<Window x:Class="WpfApplication.w"> 
    <Grid> 
     <TextBox x:Name="textBox_1" /> 
     <Frame x:Name="mainFrame" /> 
    </Grid> 
</window> 

「p1.xaml」:

<Page x:Class="WpfApplication.p1"> 
    <Grid> 
     <Button x:Name="button_1" 
      Click="Button_Click" /> 
    </Grid> 

「p1.xaml.cs」:

private void Button_Click_Upload(object sender, RoutedEventArgs e) 
{ 
    //set text of textBox_1 
} 

回答

0

你可以做

private void Button_Click_Upload(object sender, RoutedEventArgs e) 
{ 
    ((w)App.Current.MainWindow).textBox_1.Text = "Your Text"; 
    //or 
    ((w)Window.GetWindow(this)).textBox_1.Text = "Your Text"; 
} 
+0

第一和第二一個工作,但不是第三個;錯誤顯示:'MainWindow'不包含'Current'的定義 –

+0

我的不好,確實是一個錯誤。 – KANAX

0

如果你並不反對緊密耦合,只需通過專業人士將「w」與「p1」鏈接即可perty或構造函數參數。您可能需要添加一個接口'Iw'來減少耦合。 另一種選擇是爲您需要在p1中訪問的w的子項添加依賴項屬性,然後使用相對綁定來綁定它們。 P.S. 如果您顯示了一些代碼,理解後面的內容會容易得多。

+0

實例請:) – Yash

相關問題