如果有参数传入,GoBack按钮不起作用
本文关键字:GoBack 按钮 不起作用 参数 如果 | 更新日期: 2023-09-27 18:07:58
我创建了一个非常简单的项目来测试导航。步骤如下:
- 创建一个空白应用程序(XAML/c#)项目
- 在项目中添加一个基本页面"PageTwo"
- 添加一个超链接按钮和一个文本框到主页。
- 在MainPage的代码后面,使用Frame。方法导航到PageTow并传递TextBox的Text作为参数。
- 重写PageTwo的OnNavigatedTo方法来获取传递的参数
运行项目,在文本框中输入一些文本,然后单击PageTwo的按钮,它工作得很好,但如果我单击PageTwo的内置返回按钮,我会得到一个异常:值不能为空。如果我注释override 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;
}
一般来说,当重写任何UI方法时,您还需要调用基类。
如果我将PageTwo.xaml.cs覆盖OnNavigatedTo
更改为以下内容,您的代码不会导致异常:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
TB.Text = e.Parameter as string;
// call base method
base.OnNavigatedTo(e);
}