c# - 查看模型双向通信

标签 c# wpf mvvm viewmodel

我正在开发一个可重用的 WPF 控件“R”,它有自己的 View 模型“VM_R”。 我有一个使用控件 R 的 WPF 主窗口“Main”,它还有自己的 View 模型“VM_Main”。

我的问题: 我希望 VM_Main 和 VM_R 按照以下方式进行通信:

VM_Main 向 VM_R 发送请求以评估某些内容并将结果发送回 VM_Main。

我考虑了以下选项:

  1. 在 VM_Main 中实例化 VM_R。这将创建一个耦合 担忧。
  2. 我可以使用 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/

相关文章:

c# - 生成从 csv 到列表框的列表

c# - 如何使用 Viewmodel-first 从代码隐藏设置 viewmodel 属性?

c# - 使用类型 T 的成员创建类的实例,但不指定 T 类型

.net - 在 XAML 中设置按钮的闪烁效果

c# - 全屏模式,但不要覆盖任务栏

c# - 在 RelayCommand WPF 上启用按钮

WPF 文本 block 与 List<string> 的绑定(bind)

android - 如何使用 MVVM 在 RecyclerView 中监听 onCheckedChangeListener?

C# - 将多页 tiff 文件转换为 base64 字符串并使用单个图像转换回结果

c# - 从 TextBox 填充整数数组