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

时间:2016-10-12 03:04:55

标签: c# xaml windows-store-apps winrt-xaml

Windows商店应用WInRT XAML C# - 如何获取导航页面文本框值。这是我的所有代码........................... ........................

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
    }

2 个答案:

答案 0 :(得分:0)

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

另一种可能的解决方案是将需要它们的新页面连接到具有相同界面的界面,然后依次暴露TextBox.Text属性或具有相同名称的TextBox,或者您决定。这是一个更深层次的因为它可能依赖于其他内部功能,如依赖注入和/或控制器,具体取决于您的设置方式。

如果您仍然不知道我在谈论什么,那么我将假设您已经半开玩笑并建议您只是通过不同的方法寻找TextBox。如果你至少为两个页面提供了完整的代码和XAML,那么直接回答这个问题要容易得多。

答案 1 :(得分:0)

简单的问题。试试这个:

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

那就行了。