ViewModel如何获得有关数据项属性更改的通知?

时间:2011-06-24 07:35:26

标签: mvvm

ViewModel可以通过引发属性更改事件来通知View有关属性更改的信息。如果基础数据(例如,未实现IPropertyChange的Plain类)发生更改,ViewModel如何得到通知?

1 个答案:

答案 0 :(得分:2)

  

如果基础数据(例如,未实现IPropertyChange的Plain类)发生变化,ViewModel如何得到通知?

它不能,必须有一个机制来进行通知。最可能的原因是在应用程序的一个区域(或模块)中使用的POCO也在另一个区域(或模块)中使用,即松散耦合的主 - 细节情况。如果您正在“共享”此类POCO的相同实例,则您不太可能未在其中实施更改通知。如果您已实现更改通知,则应用程序的一个模块中的更改将自动对另一个模块可见(它们都在查看相同的对象),并且监视该更改通知的任何内容(如绑定子系统)都将执行它的东西,并拿起变化。

如果您有两个相同数据的单独实例且一个更新,另一个将不知道它。当您的VM通过Model请求数据,并且Model从数据库或Web服务等断开连接的数据源检索数据时,也会发生这种情况。您不知道何时更改了基础数据,您需要再次实施更改通知系统。您还可以采取另一种方法 - 让用户更改数据,然后在保存用户更改之前重新获取数据,如果在用户工作时基础数据已更改,则可以通知用户并采取适当的行动(或让用户选择适当的行动)。

这是否回答了你的问题?或者您是否愿意详细说明您想要了解的内容?