Windows 商店应用程序 WInRT XAML C# - 如何获取导航页面文本框值

Windows store app WInRT XAML C# - How to get navigated page textbox value

Windows store app WInRT XAML C# - 如何获取导航页面文本框 value.here 是我所有的代码...... ...................................

1.MainPage.xaml

    <Button Content="Navigate" Name="nav" HorizontalAlignment="Left" Margin="826,198,0,0" VerticalAlignment="Top" Click="nav_Click"/>
    <TextBlock HorizontalAlignment="Left" Margin="402,201,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top" Height="27" Width="155"/>
    <Frame Name="framee"  VerticalAlignment="Top" Height="440" HorizontalAlignment="Left" Width="600" Margin="402,238,0,0"/>
    <Button Content="Get" Name="get" HorizontalAlignment="Left" Margin="1062,193,0,0" VerticalAlignment="Top" Click="get_Click"/>

2.InfoPage.xaml

<TextBox HorizontalAlignment="Left" TextWrapping="Wrap" Name="Name" VerticalAlignment="Top" Margin="0,6,0,0" Width="348"/>
<TextBox HorizontalAlignment="Left" TextWrapping="Wrap" Name="Address" VerticalAlignment="Top" Margin="0,43,0,0" Width="348"/>
<TextBox HorizontalAlignment="Left" TextWrapping="Wrap" Name="Phone" VerticalAlignment="Top" Margin="0,80,0,0" Width="348"/>

MainPage.cs

 private void nav_Click(object sender, RoutedEventArgs e)
    {
        framee.Navigate(typeof(InfoPage));
    }

    private void get_Click(object sender, RoutedEventArgs e)
    {
      here textbox name are not showing
    }

有多种方法可以实现您的要求。如果您使用的是 MVVM 模式(我个人强烈推荐),那么您只需将 TextBox.Text 绑定到 ViewModel 中的一个字段,并对 MainPage 中的相同 ViewModel 执行相同的操作...(这可能进行更深入的讨论,所以让我知道你是否正在这样做。)如果你没有使用 MVVM 模式,那么你可能不知道我在说什么,所以让我们看看其他选项。

另一种可能的解决方案是对新页面进行接口,要求它们都具有相同的接口,该接口依次公开 TextBox.Text 属性 或具有相同名称的 TextBox 或您决定的名称。这是一个更深层次的问题,因为它可能依赖于其他内部功能,例如依赖注入和/或控制器,具体取决于您的设置方式。

如果您仍然不知道我在说什么,那么我将假设您对所有这一切都是半新的,并建议您通过不同的方法查找 TextBox。如果您至少提供了两个页面的完整代码和 XAML,直接回答问题会容易得多。

问题很简单。试试这个:

MainPage.xaml

<TextBox x:Name="MyTextBox" Text="Hello" />
<Button Click="Button_Click" />

MainPage.xaml.cs

void Button_Click(object sender, RoutedEventArgs e)
{
    Frame.Navigate(typeof(InfoPage), MyTextBox.Text);
}

InfoPage.xaml

<TextBlock x:Name="MyTextBlock" />

InfoPage.xaml.cs

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    MyTextBlock.Text = e.Parameter?.ToString();
}

那就行了。