【发布时间】:2016-09-06 17:44:33
【问题描述】:
我目前正在开发 Xamarin Forms 应用程序,并且正在对其进行重新设计以与 Prism 一起使用。我真的在努力遵守 MVVM 设计模式(我正在努力成长为一名业余开发人员并学习如何使用它们)。
1) 从 MVVM 设计模式的角度来看,在 VM 之外使用消息传递服务(Prism 的 EventAggregator)和 UI 交互(Prism 的 PageDialogService)是否不合适?我编写了几个从 VM 调用的“服务”,并且发现需要同时访问消息传递和 UI 服务。例如,VM 调用服务,该服务检索并处理一些数据,根据这些计算向用户提出问题,然后继续完成处理返回所需的值。正确地说,是否应该将控制权返回给 VM 以“仅”提出问题?
2) 如果没有禁止,是否可以访问虚拟机之外的服务?在我看来,我并不容易将它们注入到服务的构造函数中。可以将它们与其他参数一起“传递”到我正在调用的服务函数中吗?这似乎不... MVVM-ish?
更新:
我不确定我的所有步骤都是必要的,但在下面的帮助下,我得到了它的工作。首先,我将我的单例服务转换为一个接口(IMyService)和一个实现类(MyService)。接下来,我在 App.xaml.cs 中覆盖 ConfigureContainer 并调用 Container.RegisterType<IMyService, MyService>(new ContainerControlledLifetimeManager());
然后我可以将 IMyService 注入到我的 ViewModel 中,就像 IEventAggregator 和 IPageDialogService 一样,我还可以将这些服务注入到我的实现类 (MyService) 的公共构造函数中。
【问题讨论】:
标签: mvvm xamarin.forms prism