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