【发布时间】:2013-10-02 12:19:53
【问题描述】:
我正在使用 MVVM Light 并使用打包的 messenger 系统在视图模型之间进行通信,但是我遇到了一些难题!基本上,当用户单击客户记录时,会打开相应的视图并实例化 CustomerViewModel。此时,CustomerViewModel 需要从前一个视图模型 (ViewAllCustomersViewModel) 中选择的客户 ID,以便它可以获取视图绑定到的选定客户信息(仍在关注?) .所以最初我的想法是在 ViewAllCustomersViewModel(选择要查看的客户的位置)的消息中将该 ID 发送到 CustomerViewModel...但是,CustomerViewModel 直到视图加载(此时消息已经被广播)才被实例化以便能够接收消息!
那么,解决这个问题的最佳方法是什么?到目前为止,我已经考虑了 CustomerViewModel 在实例化后向 ViewAllCustomersViewModel 发送请求(基本上是说“我准备好接收消息”),然后 em>ViewAllCustomersViewModel 将 ID 发送回 CustomerViewModel...但这是解决此问题的必要方法吗?我觉得有点丑!
否则,我在想是否有另一种沟通方式可以解决我遇到的问题?但是,这难道不是消息系统的全部意义……能够在视图模型之间进行通信吗?或者我可以强制在启动时实例化视图模型吗?如果是这样,这将如何影响 ViewModelLocator?
我希望我已经清楚地概述了这个问题,我使用了虚构的视图模型名称来进行解释......请随时编辑或建议您希望我添加的任何其他信息!
【问题讨论】:
-
@Sam 先生,我觉得你的问题非常合适:D
标签: c# wpf mvvm viewmodel mvvm-light