Eri*_*c.M 1 c# mvvm uwp windows-10-universal
我正在使用带有导航框架的 SplitView 在 C# 中为 Windows 10 编写通用应用程序。我有一个带有动态加载的列表的侧边栏,当我单击其中一个项目时,我使用菜单中的模型导航到一个页面,以指示我应该在框架中加载哪个项目。
我遵循了这个示例:Windows-universal-samples/Samples/XamlNavigation/
唯一的区别是,我没有多个页面,而是每次选择具有特定 ViewModel 的不同项目时只加载一个页面。我使用 Autofac 加载 ViewModel 并MyFrame.Navigate(typeof(DetailsPage), idOfItem);加载页面。
问题是,每次导航到下一页时,上一页的实例似乎都丢失了,当我返回时,它会加载一个新实例。当我在 RootFrame 中导航时,这种事情似乎不会发生,而在 Windows Phone 8.1 中也没有发生。
我一直在网上寻找解决方案几个小时,但我找不到任何相关的东西。
有谁知道为什么会发生这种情况?我希望我的问题足够清楚。
预先感谢您的回答。
您观察到的行为是正确的并且符合预期。您有两个选择:
您可以使用Page.NavigationCacheMode,将其设置为Required. 这很容易,但可能会消耗大量内存。
或者你也可以保存页面状态OnNavigatedFrom并在恢复的OnNavigatedTo。事实上,根据您的情况,甚至可能不需要在 OnNavigatedFrom 中保存状态,假设可以在返回页面时以与您第一次进入页面时构造它的方式相同的方式构造状态(您的 DataContext)。