考虑以下情形:视图模型视图模型来沟通
- ViewModelA推出ViewModelB(通过一个共同的控制器,当然,使用IOC和DI解决所需要的类型)。
- ViewModelB需要在ViewModelA中设置一个属性值。
通过构造函数注入简单地将ViewModelA注入ViewModelB并直接设置属性是不好的?
或者......
如果一个邮件系统像棱镜的EventAggregator被用来处理的ViewModels之间的所有通信?
我喜欢注射方法,因为它很容易,但我的直觉告诉我我错过了一些东西。我呼吁你集体的智慧来帮助填补我的盲点。
我最终创建了一个包装EventAggregator的Publish/Subscribe/Unsubscribe操作的MessagingService。 MessagingService被注入到ViewModelBase类中,因此我的应用程序中的任何ViewModel都可以使用它。 – 2011-01-28 22:41:57
@Chris Swain - 我喜欢它。如果我必须将ViewModel与ViewModel进行通信,那么我将在未来采用这种方法。但是,在我最近的工作中,我通过强制模型中的所有通信来避免所有这些情况。当模型中发生任何变化时,我的Presenter知道它并告诉顶层ViewModel有可能发生了变化。然后,它向树和所有子级,孙级等传递一个通知,ViewModels检查它们的模型数据以查看是否有任何更改。 – 2011-01-29 16:52:11