如果有参数传入,GoBack按钮不起作用

本文关键字:GoBack 按钮 不起作用 参数 如果 | 更新日期: 2023-09-27 18:07:58

我创建了一个非常简单的项目来测试导航。步骤如下:

    创建一个空白应用程序(XAML/c#)项目
  1. 在项目中添加一个基本页面"PageTwo"
  2. 添加一个超链接按钮和一个文本框到主页。
  3. 在MainPage的代码后面,使用Frame。方法导航到PageTow并传递TextBox的Text作为参数。
  4. 重写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;
    }

如果有参数传入,GoBack按钮不起作用

一般来说,当重写任何UI方法时,您还需要调用基类。

如果我将PageTwo.xaml.cs覆盖OnNavigatedTo更改为以下内容,您的代码不会导致异常:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    TB.Text = e.Parameter as string;
    // call base method
    base.OnNavigatedTo(e);
}