我正在开发一个可重用的 WPF 控件“R”,它有自己的 View 模型“VM_R”。 我有一个使用控件 R 的 WPF 主窗口“Main”,它还有自己的 View 模型“VM_Main”。
我的问题: 我希望 VM_Main 和 VM_R 按照以下方式进行通信:
VM_Main 向 VM_R 发送请求以评估某些内容并将结果发送回 VM_Main。
我考虑了以下选项:
- 在 VM_Main 中实例化 VM_R。这将创建一个耦合 担忧。
- 我可以使用 MVVM Light Messenger。但是我不想有两个 Register Call 和两个 Sends 调用。
谢谢
最佳答案
I'm developing a reusable WPF control "R" that has its own view model "VM_R".
这可能是错误的。一般来说,如果您认为您需要一个特定控件的 View 模型,那么您实际上是在将代码放在错误的位置。
将这些内容粘贴到控件的代码隐藏中,并公开真实模型或 View 模型可以绑定(bind)到的依赖属性。
Instantiate VM_R in VM_Main. This will create a coupling concerns.
这证实了我对您将代码放在错误位置的怀疑。
I can use MVVM Light Messenger.
没有。永远不要使用那个。 MVVM Light Messenger 只是等待发生的大量内存泄漏。
关于c# - 查看模型双向通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42160471/