【发布时间】:2017-02-10 13:23:57
【问题描述】:
我正在开发一个可重用的 WPF 控件“R”,它有自己的视图模型“VM_R”。 我有一个使用控件 R 的 WPF 主窗口“Main”,它也有自己的视图模型“VM_Main”。
我的问题: 我希望 VM_Main 和 VM_R 以下列方式进行通信:
VM_Main 向 VM_R 发送请求以评估某些内容并将结果发送回 VM_Main。
我考虑了以下选项:
- 在 VM_Main 中实例化 VM_R。这将创建一个耦合 担忧。
- 我可以使用 MVVM Light Messenger。但是我不想有两个注册呼叫和两个发送呼叫。
谢谢
【问题讨论】:
-
不,这就是 DepenencyProperty (s) 的用途
-
你到底为什么要另一个 ViewModel 为你当前的 ViewModel 评估一些东西?
-
我想从 VM_MAIN 中的 Control R 中读取组合框和复选框值。
-
视图模型 A 必须引用视图模型 B 并调用方法或调用它的命令,或者两个视图模型可以使用信使相互通信。您还在寻找什么其他选择?要么就是这个,要么将两个视图模型合并为一个。
-
如果视图模型 A 期望视图模型 B 的结果,您不妨直接引用视图模型 B,因为它们实际上是间接地相互耦合的。如果视图模型 A 在没有从视图模型 B 返回结果的情况下无法正常工作,那么它确实依赖于后者。