日期:2014-05-20  浏览次数:21043 次

DataContext原理
this.DataContext = abc.

这个DatacContext的原理是什么?

------解决方案--------------------


DatacContext 可以是变量 可以是对象


------解决方案--------------------
DataContext 简单的讲就是共享数据源

他在多个UI控件之间共享相同的数据,如果一个UI的数据变更,那么与之绑定在相同数据项的UI会同时发生改变,而且这是由DataContext 自动维护的并不需要你去写代码

 如果一个 textbox的text 和一个Label的text绑定在一个相同数据项上,那么你在textbox里面输入aaa,则label会同时改变为aaa,这个过程不需要你像手动同步那样,需要你订阅text的事件
onTextChange(sender,e)
{
this.Label1.Text=this.Textbox1.Text
}
他是自动完成的


而他的原理则是 微软是依赖抽象的数据绑定接口完成。比如上面的自动更新依赖的是InofityPropertyChanged接口,如果数据源属性更新将会触发PropertyChanged事件,而窗体内部相关数据绑定维护维护对象本身也会订阅属于数据源的PropertyChanged事件,这样一个属性更改被窗体内部数据维护对象所捕获,同时引发对窗体数据重新绑定的要求。UI上相关数据被窗体自动重新绑定并刷新