C# 访问WPF中嵌入页面中的控件

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文本框不是

我在主窗口中显示了一个页面,但我似乎无法从主窗口的cs文件访问该页面上的控件

这是主窗口:

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