Xaml 通用应用程序-在splitview导航中还原视图状态

Xaml 通用应用程序-在splitview导航中还原视图状态,xaml,win-universal-app,Xaml,Win Universal App,当用户选择返回时,恢复视图“状态”的最佳方法是什么。 例如,第一个视图“UserList”包含许多联系人的列表视图,第二个视图包含联系人详细信息。当用户返回“用户列表”视图时,如何检索状态(包括滚动视图位置等?您应该在拆分视图的内容中使用一个框架,当您返回时,它将使用相同的信息还原以前的内容,我强烈建议您查看并查看有关XAMLNavigation的示例,它包含了有关导航的所有内容 当然,除此之外,我建议您使用MVVM并绑定所有要存储的属性,如联系人等。最后,简单的方法是使用 Navigation

当用户选择返回时,恢复视图“状态”的最佳方法是什么。
例如,第一个视图“UserList”包含许多联系人的列表视图,第二个视图包含联系人详细信息。当用户返回“用户列表”视图时,如何检索状态(包括滚动视图位置等?

您应该在拆分视图的内容中使用一个框架,当您返回时,它将使用相同的信息还原以前的内容,我强烈建议您查看并查看有关XAMLNavigation的示例,它包含了有关导航的所有内容


当然,除此之外,我建议您使用MVVM并绑定所有要存储的属性,如联系人等。

最后,简单的方法是使用

NavigationCacheMode = NavigationCacheMode.Enabled

在代码隐藏页面中

Juan Pablo告诉你的关于使用MVVM的内容是一个很好的观点!最好的方法是在导航时“存储/缓存”ViewModel,并在返回时再次检索它

如果不想为视图设置NavigationCacheMode(因为设置此选项将获得更多内存),可以使用ListViewPersistenceHelper来保留ListView滚动位置


肖恩·斯肯德罗特(Shawn Skendrot)在他的博客上举了一个例子

我看了一下样本。特别是XAMLNavigation示例。“钻取”页面演示是我想做的一个完美示例:当您选择最后一项,然后返回“状态”不是相同的如果希望控件中的状态与无法导航的控件中的状态完全相同,则必须删除一个网格控件(例如,使用Content1),然后添加第二个网格控件(使用Content2,但不使用导航)。