Mvvmcross:处理全球应用事件

时间:2014-02-03 12:23:58

标签: c# mobile mvvm xamarin mvvmcross

使用MvvmCross,实现全局应用程序事件的野兽方式是什么?

案例1:应用程序启动 - 我想要PIN保护我的应用程序,所以在FinishedLaunching我想要一些对象检查是否已经设置了PIN,如果没有,则启动模态视图以询问用户PIN 。模态视图应该隐藏下面的导航,而不会弹出或修改任何加载的视图。

案例2:注销 - 用户通过mvvm命令从应用程序中删除PIN,模态视图会阻止所有其他视图而不卸载它们。在这种情况下,存储PIN的模型会发布一个事件,而某些模型应该显示模态视图。

这可以很容易地在appdelegate上实现,但我想知道是否有更好的MVVM方式来实现这一点,某种用于应用程序本身的ViewModel响应暴露核心库中行为的事件。

1 个答案:

答案 0 :(得分:1)

如果您希望在app / singleton级别处理这些类型的事件,那么您可以使用以下方法轻松完成此操作:

  1. 在每个使用Messenger插件收听消息的UI项目中初始化的某种专家服务
  2. 每个平台上的某种本机对象,用于在发生关键本机事件时发送消息
  3. ICommand中用于发送用户发起的事件的其他ViewModel实施
  4. MvvmCross确实包含一个初始实现来帮助2 - 每个平台提供一个单独的IMvxLifetime对象

    这是在每个平台上使用:

    实现的

    然而,在实践中,这个IMvxLifetime实现从来没有被特别大量使用 - 当我使用它几次时,我发现自己不得不在几个平台上解决问题。