如何从 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";
}
我有一个 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";
}