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

How can I access control of parent window from child page in WPF?

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

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

如果您不反对紧密耦合,则可能需要 link "w" 和 "p1" 通过 属性 或构造函数 parameter.You添加一个接口 'Iw' 以稍微放松耦合。 另一种选择是为您需要在 p1 中访问的 w 的子级添加依赖属性,然后使用相对绑定来绑定它们。 P.S。 如果您展示了一些代码,将更容易理解您的需求。

你可以做到

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