【问题标题】:Mvvmcross: handling global app eventsMvvmcross:处理全局应用程序事件
【发布时间】:2014-02-03 12:23:58
【问题描述】:

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

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

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

这可能很容易在 appdelegate 上实现,但我想知道是否有更好的 MVVM 方法来执行此操作,即应用程序本身的某种 ViewModel 响应暴露核心库中行为的事件。

【问题讨论】:

    标签: c# mobile mvvm xamarin mvvmcross


    【解决方案1】:

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

    1. 在每个 UI 项目中初始化的某种专业服务,它使用 Messenger 插件来收听消息
    2. 每个平台上的某种原生对象,用于在关键原生事件发生时发送消息
    3. ViewModels 中的其他 ICommand 实现以发送用户发起的事件

    MvvmCross 实际上包含一个初始实现来帮助 2 - 每个平台都提供一个单例 IMvxLifetime 对象

    这是在每个平台上使用的:

    然而,在实践中,这种IMvxLifetime 实现从未被特别频繁地使用 - 当然,当我使用它几次时,我发现自己不得不在一些平台上解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      • 1970-01-01
      • 2017-06-05
      相关资源
      最近更新 更多