2016-07-20 106 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

相关问题