使用MvvmCross,实现全局应用程序事件的野兽方式是什么?
案例1:应用程序启动 - 我想要PIN保护我的应用程序,所以在FinishedLaunching我想要一些对象检查是否已经设置了PIN,如果没有,则启动模态视图以询问用户PIN 。模态视图应该隐藏下面的导航,而不会弹出或修改任何加载的视图。
案例2:注销 - 用户通过mvvm命令从应用程序中删除PIN,模态视图会阻止所有其他视图而不卸载它们。在这种情况下,存储PIN的模型会发布一个事件,而某些模型应该显示模态视图。
这可以很容易地在appdelegate上实现,但我想知道是否有更好的MVVM方式来实现这一点,某种用于应用程序本身的ViewModel响应暴露核心库中行为的事件。
答案 0 :(得分:1)
如果您希望在app / singleton级别处理这些类型的事件,那么您可以使用以下方法轻松完成此操作:
Messenger
插件收听消息的UI项目中初始化的某种专家服务ICommand
中用于发送用户发起的事件的其他ViewModel
实施 MvvmCross确实包含一个初始实现来帮助2 - 每个平台提供一个单独的IMvxLifetime
对象
这是在每个平台上使用:
实现的然而,在实践中,这个IMvxLifetime
实现从来没有被特别大量使用 - 当我使用它几次时,我发现自己不得不在几个平台上解决问题。