0

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

  1. 创建一个空白应用程序 (XAML/C#) 项目。
  2. 将基本页面“PageTwo”添加到项目中。
  3. 将 HyperlinkBut​​ton 和 TextBox 添加到 MainPage。
  4. 在 MainPage 的代码隐藏中,使用 Frame.Navigate 方法导航到 PageTow 并将 TextBox 的 Text 作为参数传递。
  5. 重写 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;
    }
4

1 回答 1

1

通常,当覆盖任何 UI 方法时,您还需要调用 base.

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

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    TB.Text = e.Parameter as string;
    // call base method
    base.OnNavigatedTo(e);
}
于 2013-04-08T16:25:50.510 回答