如何使用MVVM模式通过UWP中的一个ViewModel通知所有ViewModel关于Model类属性中所做的更改

时间:2016-07-14 04:59:48

标签: uwp

假设我有两个ViewModel,并且两个都使用相同的Model类。如果一个ViewModel更改了Model类中的某个属性值,我想将其通知给第二个ViewModel,这样我就可以在Views中显示更改而不再刷新它。

Model<-------->ViewModel 1
  ^
  |------------>ViewModel 2

请帮助我,如何使用MVVM模式实现此(Model&lt; ---&gt; ViewModel(s)双向绑定)?如果还有其他更可行的方法,那就非常感激了。

1 个答案:

答案 0 :(得分:1)

我认为你误解了Model<--->ViewModel(s) Two-Way binding,实际上绑定源至少应该是Model的一个实例,DataContext应该是包含Model的这个实例的ViewModel,我们不能直接将模型绑定到绑定目标。所以你的设计模式不太合适。

我认为您需要的就像在ViewModel1中更改数据时,其他ViewModel可以得到通知并对其做出响应,您可能通过手动刷新它来完成此工作,并且您想要找到另一种方法。

这是一种在MVVM模式中执行此操作的简单方法,您可以使用MVVM Light的Messenger,您可以在SO上引用此问题:Use MVVM Light's Messenger to Pass Values Between View Model