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

Posted

技术标签:

【中文标题】Windows 商店应用程序 WInRT XAML C# - 如何获取导航页面文本框值【英文标题】:Windows store app WInRT XAML C# - How to get navigated page textbox value 【发布时间】:2017-02-20 17:45:09 【问题描述】:

。这是我的所有代码.......................... ......................

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
    

【问题讨论】:

【参考方案1】:

足够简单的问题。试试这个:

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();

这样就可以了。

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

MainPage.Xml : MainPage : 请给我发你的电子邮件..我是新来这里的人在这里评论问题 @Aizaz Ahmad 您可以通过在其中添加代码来编辑您的问题,这样我们可以更好地帮助您,谢谢! @Cherry Bu i 编辑了我的问题...编辑起来非常麻烦.. (^-^)

以上是关于Windows 商店应用程序 WInRT XAML C# - 如何获取导航页面文本框值的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows8 中编写 C#/XAML 与 C++/XAML WinRT 应用程序的优缺点是啥? [关闭]

XAML 页面不是在 Windows 10 Mobile 上的 WinRT 应用程序中收集的垃圾,但在 WP8.1 上按预期工作

Windows 8 运行时(WinRT/Windows 应用商店应用程序/Windows 10 通用应用程序)与 Silverlight 和 WPF 相比如何? [关闭]

如何在 Windows 8 商店应用程序中访问 Parent 的 DataContext

如何在 Windows 8 商店应用程序中访问 Parent 的 DataContext

如何使用 xaml Themeresource 属性更改 winrt 应用程序的背景颜色和强调颜色