用户交互和服务事件更新视图模型的好模式是什么?

时间:2011-08-23 20:36:17

标签: mvvm view viewmodel design-patterns service-layer

考虑以下两种情况:

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

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

服务层可以使用某种机制 Y 来完成此操作。例如,在业务/域模型中引发事件,创建操作viewmodel的命令,在viewmodel上调用方法等。

实际上, X Y 可以是相同的机制(或模式)。

有什么好处,坚持MVVM的精神,但干嘛?

1 个答案:

答案 0 :(得分:1)

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

一般来说:

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

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

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

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