EventAggregator模式:如何传递数据?

| 我正在研究在我正在研究的UI项目(Silverlight / MVVM)上利用事件聚合器模式来支持视图/视图模型之间的松散耦合。我们已经使用一个简单的事件系统编写了一些屏幕-到目前为止,它还不过是概念验证,但对于创建一个松散耦合的系统来说,这似乎是一个非常明智的解决方案。 我遇到的问题是当尚未实例化接收的ViewModel时,将数据从一个ViewModel传递到另一个ViewModel。例如,如果打开了“客户列表”屏幕,则用户可以单击特定的客户以打开编辑/查看“客户详细信息”屏幕(可能在子窗口中)。客户详细信息屏幕需要一个客户(或客户ID)才能起作用。 因此,OpenCustomerDetailEvent包含相关的客户信息似乎是合理的,但是将这些信息注入到Customer Detail V / VM中有什么选择呢?由于处理事件时它还没有在内存中,因此它不能直接侦听该事件(它本身不能成为处理程序)。我们正在使用依赖注入的容器来创建视图和视图模型(我们当前执行“先视图”),因此让单独的处理程序通过构造函数注入数据并不是一个好选择。 一旦将数据构造成View(Model),还有什么其他选择呢?带有强类型参数的init方法?使用setter来注入数据?让处理程序创建V / VM,然后调度VM监听的第二个事件?     
已邀请:
为此,我在Silverlight应用程序中使用了Prism框架。它提供了EventAggregator模式的实现和视图导航基础结构。 对于棱镜,将使用NavigationParameters,它们为视图/视图模型提供信息以使用和初始化哪些数据。如果尚未创建视图/视图模型,则EventAggregator模式将无用,因为尚未将其注册到事件中。 如果您想依靠自己的框架,我将介绍一下如何在棱镜框架中实现视图导航以及为自己的框架挑选一些组件。 我个人会鼓励您使用棱镜框架。     

要回复问题请先登录注册