UWP Frame.GoBack 带参数

UWP Frame.GoBack with argument

场景是我有一个日历页面,该页面显示一个月中的所有日子,每天都有一个添加按钮:

当我点击添加按钮时,它会将我带到另一个页面,如果用户点击硬件后退按钮,我希望应用返回到日历页面,但我希望页面滚动到用户最初的日期点击添加按钮。

滚动到日期没问题 - 如果作为测试,我导航到带有 NavigationEventArgs.Parameter = "2016-01-17" 的页面,然后我的页面滚动到 17 号。

我遇到的问题是我似乎无法在 rootFrame.GoBack(); 调用中指定参数。

那么,有没有办法在 rootFrame.GoBack(); 调用中指定参数,手动编辑后退按钮堆栈 - 如果有这样的东西 - 以便所需的参数存在。

无法使用GoBack方法直接传递参数,但有一个解决方法:

在您的日历页面上,将 NavigationCacheMode 设置为 NavigationCacheMode.Required,这样当您调用 Frame.GoBack 时,日历页面的状态将与您导航到其他页面之前相同:

<Page <!-- some unrelated XAML code -->
      NavigationCacheMode="Required"
      >

编辑 - 回复评论:

NavigationCacheMode.Required 所做的是,框架不会在您每次导航到该页面时创建页面的新实例,而只会在第一次导航时创建。但是 OnNavigatedTo 方法仍然会在您每次导航到它时被调用。我不知道你的代码,但如果你不这样做,你将不得不检查是否传递了任何参数以及它是否是 string。所以在你的 OnNavigatedTo 方法覆盖中你会做这样的事情:

string parameter = e.Parameter as string;

if (parameter != null)
{
    // Use parameter to scroll to date you need
}