我创建了一个非常简单的项目来测试导航。以下是步骤。
运行项目,将一些文本输入到TextBox并单击按钮到PageTwo,它运行良好,但是如果我从PageTwo单击内置的Back Button,我会得到一个异常:Value不能为null。如果我对覆盖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;
}
答案 0 :(得分:1)
通常,当覆盖任何UI方法时,您还需要调用基础。
如果我将 PageTwo.xaml.cs 覆盖OnNavigatedTo
更改为以下内容,则代码不会导致异常:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
TB.Text = e.Parameter as string;
// call base method
base.OnNavigatedTo(e);
}