UWP Frame.GoBack 带参数

标签 uwp windows-10 win-universal-app

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

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

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

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

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

最佳答案

无法使用 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
}

关于UWP Frame.GoBack 带参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44345157/

相关文章:

c# - 通用 Windows 10 WebView - 如何清除/禁用缓存?

c# - 如何使 UWP 应用适合屏幕大小?

c# - .NET Native 比使用 ReadAsync 调用的调试构建慢得多

windows-10 - Windows 10 IVirtualDesktopManager::MoveWindowToDesktop

windows-10 - 树莓派 2 物联网

c# - UWP 中的 itemscontrol 不绑定(bind)到 observablecollection 项目的坐标

javascript - WinJS xhr可以发出HTTPS请求吗?

c# - UWP - 通过 C# 中的 GPS 传感器明确获取位置坐标

c# - 如何在 UWP Composition API 中组合多种效果

windows-10 - 父子连接时系统卡住