场景是我有一个日历页面,该页面显示一个月中的所有日子,每天都有一个添加按钮:
当我单击添加按钮时,它会将我带到另一个页面,如果用户点击硬件后退按钮,我希望应用程序返回日历页面,但我希望页面滚动到用户最初点击添加按钮的日期.
滚动到日期很好 - 如果作为测试,我导航到带有 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
}
关于UWP Frame.GoBack 带参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44345157/