使用 mvvmlight 在 Windows 8 中实现状态处理 在 mvvmligt 中是否有任何方法可以管理 WinRT 中的状态?如何使用 WinRT 复制默认 Suspensionmanager 的功能?第二个是关于管理导航周期,即如果我从页面 A - > B 导航,然后进入挂起和关闭状态。当我重新启动需要打开页面 B 的应用程序并按下返回键时,我需要加载 A。如何在我的 WinRT 应用程序中使用 MVVM 灯有效地实现这一点?
3 回答
这些并不是真正的 MVVM Light 功能。你需要自己做这些。
一种选择是创建您自己的导航服务(参见此处的示例)。导航服务可以使用暂停管理器来为应用程序构建/管理面包屑路径。如果您添加了其他方法:
public void GoToMostRecentPage()
{//blah}
您可以在应用程序启动时调用此方法并将用户带到相应的页面。
我会坚持使用 SuspensionManager。如果你想让它对 MVVM 更友好,你可以将它包装在一个服务中,根据需要注入到你的视图模型中。
您可能对可以从 NuGet 或我上面链接到的 CodePlex 站点获得的开源Okra App Framework感兴趣。它是从头开始设计的,可以很好地与 Windows 8 和 MVVM 模式配合使用(您仍然可以使用 MVVM Light 基类)。
它有一个导航管理器,可以自动处理你上面提到的所有事情——管理应用程序的导航堆栈、应用程序暂停/终止时堆栈的持久性,甚至允许视图模型通过一个简单的接口来保持它们自己的状态(比如 SuspensionManager 如何为页面工作) )。
(免责声明:我是该项目的首席开发人员)
我最初是为 WP7 编写的,并且一直在为 Win8 RT 进行更新。它允许您将属性附加到要保留在视图模型中的属性,然后 PersistenceManager 在应用程序暂停时将它们脱水(序列化到文件),并在应用程序恢复时重新水化。
有 WP7 和 Win8 的示例,基本 MVVM 模式和 MVVM Light