带有参数

时间:2017-06-03 14:50:06

标签: uwp windows-10 win-universal-app

方案是我有一个日历页面,页面显示每月的所有日期,每天都有一个添加按钮:

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

滚动到日期很好 - 如果作为测试我导航到NavigationEventArgs.Parameter = "2016-01-17"的页面,那么我的页面会滚动到第17页。

我遇到的问题是我似乎无法在rootFrame.GoBack();电话上指定参数。

那么,有没有办法在rootFrame.GoBack();调用上指定一个参数手动编辑后退按钮 - 如果有这样的事情 - 那么所需的参数就在那里。

1 个答案:

答案 0 :(得分:3)

如何使用GoBack方法直接传递参数,但有一种解决方法:

在您的日历页面上设置NavigationCacheModeNavigationCacheMode.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
}