日期:2014-06-10 浏览次数:20476 次
数据绑定需要:
现象:在界面中修改控件中的参数可以同时反映到后台的实例中去,但是直接修改后台的实例,对界面中的参数没有影响
原因:由于普通对象没有“通知我的属性变了”这么一种机制,所以改变对象的属性,界面不会变,但是界面改变是有TextChanged之类的事件的,所以改变界面可以同步修改到对象
解决方法:为类添加INotifyPropertyChanged接口,数据绑定会检测DataContext是否实现了INotifyPropertyChanged,如果实现了,就会监听PropertyChanged得知属性变化
1 class Person:INotifyPropertyChanged 2 { 3 private int age; 4 5 public int Age 6 { 7 get 8 { 9 return age; 10 } 11 set 12 { 13 this.age = value; 14 if (PropertyChanged != null) 15 { 16 PropertyChanged(this, 17 new PropertyChangedEventArgs("Age")); 18 } 19 } 20 }