我创建了一个非常简单的项目来测试导航。以下是步骤。
- 创建一个空白应用程序 (XAML/C#) 项目。
- 将基本页面“PageTwo”添加到项目中。
- 将 HyperlinkButton 和 TextBox 添加到 MainPage。
- 在 MainPage 的代码隐藏中,使用 Frame.Navigate 方法导航到 PageTow 并将 TextBox 的 Text 作为参数传递。
- 重写 PageTwo 的 OnNavigatedTo 方法以获取传递的参数。
运行项目,在 TextBox 中输入一些文本,然后单击 PageTwo 的按钮,效果很好,但是如果我从 PageTwo 中单击内置的后退按钮,则会出现异常:值不能为空。如果我注释了重写 OnNavigatedTo 方法,则返回按钮可以毫无例外地将我引导到主页。
任何人都可以帮忙吗?
MainPage.xaml:
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<StackPanel>
<TextBox Width="200" Name="TB"/>
<HyperlinkButton Content="Go to PageTwo" Click="HyperlinkButton_Click_1"/>
</StackPanel>
</Grid>
MainPage.xaml.cs:
private void HyperlinkButton_Click_1(object sender, RoutedEventArgs e)
{
Frame.Navigate(typeof(PageTwo), TB.Text);
}
PageTwo.xaml:
<TextBlock Name="TB" Grid.Row="1"/>
PageTwo.xaml.cs:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
TB.Text = e.Parameter as string;
}