方案是我有一个日历页面,页面显示每月的所有日期,每天都有一个添加按钮:
当我点击添加按钮时,它会将我带到另一个页面,如果用户点击硬件后退按钮,我希望应用程序返回日历页面,但我希望页面滚动到用户最初点击的日期添加按钮。
滚动到日期很好 - 如果作为测试我导航到NavigationEventArgs.Parameter = "2016-01-17"
的页面,那么我的页面会滚动到第17页。
我遇到的问题是我似乎无法在rootFrame.GoBack();
电话上指定参数。
那么,有没有办法在rootFrame.GoBack();
调用上指定一个参数手动编辑后退按钮 - 如果有这样的事情 - 那么所需的参数就在那里。
答案 0 :(得分:3)
如何使用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
}