1

考虑以下两种情况:

  • 用户按下视图中的按钮(例如Fulfill Order),我们希望视图立即更新(禁用按钮、添加进度条等)
  • 服务层引发业务事件,最终必须反映在视图上(例如,产品缺货)。

这两种情况都合法地需要某种机制X来更新视图模型。使用 MVVM,视图可以通过在事件处理程序中设置视图模型的属性、通过命令绑定或通过其他一些机制来完成此操作。

服务层可以使用某种机制Y来做到这一点。例如,在业务/域模型中引发事件、创建操作视图模型的命令、调用视图模型上的方法等。

事实上,XY可能是相同的机制(或模式)。

这样做有什么好处,既符合 MVVM 的精神,又是 DRY 吗?

4

1 回答 1

1

我认为您需要选择一个 MVVM 框架并遵循它支持的模式。

一般来说:

  • 您的按钮将通过 ICommand 或您的 MVVM 框架支持的任何方式连接到 ViewModel 上的 FulfillOrder 方法
  • 将连接一个“CanFulfillOrder”布尔属性以通过 INotifyPropertyChanged 禁用您的按钮,这可以由 FulfillOrder 方法或您提到的事件触发。它也可以绑定到进度条上的可见性。
  • 另一个属性可以在进度条上提供百分比并适当地更新它

一个好的通用 MVVM 框架是MVVM Light

如果您正在寻找更强大的功能,并且可以处理更多复杂性,请尝试Caliburn

或者,如果您想使用动态并尝试一些最前沿的东西,请尝试我的框架:NoMvvm

于 2011-08-28T21:31:57.913 回答