在对象中保留值以进行后退导航 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 参数触发。
我正在开发基于 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 参数触发。