C# 访问WPF中嵌入页面中的控件
我在主窗口中显示了一个页面,但我似乎无法从主窗口的cs文件访问该页面上的控件 这是主窗口:C# 访问WPF中嵌入页面中的控件,c#,wpf,data-binding,C#,Wpf,Data Binding,我在主窗口中显示了一个页面,但我似乎无法从主窗口的cs文件访问该页面上的控件 这是主窗口: <Window Title="MainWindow" Height="350" Width="525"> <Grid> <Frame Name="frame0" Source="SubPage.xaml" /> </Grid> </Window> 不幸的是,textName总是null文本框不是
<Window
Title="MainWindow" Height="350" Width="525">
<Grid>
<Frame Name="frame0" Source="SubPage.xaml" />
</Grid>
</Window>
不幸的是,
textName
总是null
文本框不是框架模板的一部分。它是页面内容的一部分
如果将SubPage.xaml
中TextBox
的x:FieldModifier
属性设置为public
或internal
或通过SubPage.xaml.cs
类的属性公开它…:
<TextBox x:Name="textName" Text="TextBox" x:FieldModifier="public"/>
在此之前,没有
页面
或文本框
,因为子页面
的实例尚未创建。文本框不是框架模板的一部分。它是页面内容的一部分
如果将SubPage.xaml
中TextBox
的x:FieldModifier
属性设置为public
或internal
或通过SubPage.xaml.cs
类的属性公开它…:
<TextBox x:Name="textName" Text="TextBox" x:FieldModifier="public"/>
在此之前,没有
页面
也没有文本框
,因为子页面
的实例尚未创建。子页面子页面=frame0。内容作为子页面
是解决方案,谢谢。子页面子页面=frame0。内容作为子页面
是解决方案,谢谢。
<TextBox x:Name="textName" Text="TextBox" x:FieldModifier="public"/>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
frame0.Navigated += Frame0_Navigated;
}
private void Frame0_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
SubPage subPage = frame0.Content as SubPage;
if (subPage != null)
{
TextBox textName = subPage.textName;
}
//remove the event handler
frame0.Navigated -= Frame0_Navigated;
}
}