在对象中保留值以进行后退导航 UWP

Hold Values in Objects for back navigation UWP

我正在开发基于 Template 10 MVVM 的 UWP 应用程序。

当前情况

我正在从 api 获取数据并在 viewModel 上创建名为 HugeDataConsumer 的本地 IEnumerable 属性。

发生了什么:

navigation 之后,从另一个角度来看,当我按返回并返回到我的 mainView 时,HugeDataConsumer IEnumerable 变为空,因为 ViewModel再次创建。

我想达到的目标:

我希望我的 ViewModel 保留 HugeDataConsumer IEnumerable 的值,以便导航后退事件感觉状态恢复。 我已经尝试在我的代码隐藏中设置 NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Required;,但我认为它也不适用于我的 viewModel。有办法实现吗?

您可以使用 DataContractSerializer 手动序列化您的数据,并在您导航到主视图模型时将其反序列化。 Prism 正在使用名为 SessionStateService 的服务来执行此类操作。

NavigationCacheMode 不适用于上下文。它只兑现视图本身,而不兑现模型。

您始终可以使用自己的静态 类 缓存数据,但如果我说开发人员讨厌静态 类,我想每个人都会同意我的看法 类。

此外,如果您正在开发 UWP 应用程序,请不要忘记挂起场景。每当您的应用暂停时,您的 OnNavigatedTo 将在用户返回应用时使用 NavigationMode Refresh 参数触发。