【问题标题】:GoBack button doesn't work if there's parameter passed in如果有参数传入,GoBack 按钮不起作用
【发布时间】:2013-04-09 00:25:50
【问题描述】:

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

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

运行项目,在TextBox中输入一些文本,然后点击PageTwo的按钮,效果很好,但是如果我从PageTwo点击内置的后退按钮,我会得到一个异常:值不能为空。如果我注释了 override OnNavigatedTo 方法,Back 按钮可以毫无例外地将我引导到 Main Page。

有人可以帮忙吗?

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;
    }

【问题讨论】:

  • 这不是我的作业...
  • 对不起,你能告诉我们你的代码吗?
  • 我已添加代码
  • 你能把项目上传到 SkyDrive 或 Dropbox 上,所以我可以检查问题,因为我无法重新生成你的问题。

标签: c# xaml windows-8


【解决方案1】:

一般而言,当覆盖任何 UI 方法时,您还需要调用基类。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    相关资源
    最近更新 更多