如何从WPF中的子页面访问父窗口的控件?

时间:2016-07-20 07:32:49

标签: wpf wpf-controls

我有一个窗口" w"有几个控件和一个框架" f"。我使用页面" p1,p2,.."替换" f"。我想访问" w"来自" p1"。我怎样才能做到这一点?

" w.xaml":

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

&#34; p1.xaml&#34;:

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

&#34; p1.xaml.cs&#34;:

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

2 个答案:

答案 0 :(得分:4)

你可以做到

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";
}

答案 1 :(得分:0)

如果你不反对紧耦合,只需通过属性或构造函数参数链接“w”和“p1”。你可能想要添加一个接口'Iw'来松散你的耦合。 另一个选择是为你需要在p1中访问的w子项添加依赖项属性,然后使用相对绑定绑定它们。 附: 如果您展示了一些代码,那么理解您所追求的内容要容易得多。