MVVM的特点之一是实现数据同步,即,前台页面修改了数据,后台的数据会同步更新。
上一篇我们已经一起编写了框架的基础结构,并且实现了ViewModel反向控制Xaml窗体。
那么现在就要开始实现数据同步了。
DataContext—数据上下文
在实现数据同步前,我们要了解一个知识点——DataContext。
WPF中每个UI都有一个Content和一个DataContext,那么Content和DataContext是什么呢?
Content:Content是指页面内容,即我们编写的代码,或者认为它是展示的UI。
打个比方,Content就是HTML页面中的标签,如【<html></html】;那么,在WPF中Content是指的就是Xaml页面的标签了。
DataContext:DataContext是指页面中的数据内容,这部分内容只有运行了才存在,用过ASP.NET MVC的同学可以把它理解为MVC中的Model。(每个页面都有一个唯一的指定Model)
既然在WPF里DataContext就是MVC中的Model。那么,自然的,DataContext就要存储页面的ViewModel了,所以,我们为它赋值它自身对应的ViewModel。
现在,找到我们的BaseViewModel的构造函数,加入这行代码[UIElement.DataContext = this;],代码如下:
public BaseViewModel() { WindowMain = Application.Current.MainWindow; SetUIElement(); UIElement.DataContext = this; }