MVVM将数据传递到对话框视图模型

Mat*_*att 15 parameters wpf mvvm viewmodel

我正在研究使用MVVM,虽然我在很大程度上理解它,但有一件事我无法理解.

想象一下,我有一个View和ViewModel组合,显示了一个foobars列表.当用户在列表中选择foobar并单击编辑按钮时,我希望foobar显示在弹出对话框窗口中,以便进行编辑.此对话窗口(视图)将具有自己的关联ViewModel.

我知道按钮可以绑定到ViewModel列表上的命令,但是从这里我如何实例化foobar编辑器?

1)我是否必须将消息发送回View,这将打开对话窗口?如果是这样,这不是打败了命令的目的吗?

2)如何将foobar传递给编辑器的ViewModel?如果它是由它的构造函数,这不是很难在XAML中声明ViewModel吗?

我觉得这是阻止我使用MVVM的最后一块拼图,我真的很想得到一个很好的解耦方案.

谢谢马特

Vla*_*lad 2

我也许会用以下方式来做:

  1. 附加到编辑按钮的命令启动编辑对话框,为其创建自定义 ViewModel (VM)。命令本身可能应该位于列表的 VM 中或模型中(不太确定)。
  2. Foobar 编辑对话框的 VM 在其构造函数中获取对 Foobar 的引用。
  3. foob​​ar 被克隆并且克隆被编辑。
  4. 一旦用户在 foobar 编辑对话框中按下“确定”,克隆的值就会写回到 VM 中的原始 foobar(并且对话框关闭)。

之所以需要克隆,是因为用户在接受编辑对话框中的更改之前不想看到 foobar 列表中的更改。但是,如果在线编辑可以,则不需要克隆。

更改会自动传播。

PS:虽然我是MVVM的支持者,但从纯MVVM的角度来看,我不确定我的解决方案是否是正统的。