问题描述
定义一个简单的类,classHuman:INotifyPropertyChanged{publiceventPropertyChangedEventHandlerPropertyChanged;privatestringname;publicstringName{get{returnname;}set{name=value;if(this.PropertyChanged!=null){this.PropertyChanged.Invoke(this,newPropertyChangedEventArgs("Name"));}}}}有两个问题:1、PropertyChanged是固定的么,不能更改么?为什么?2、PropertyChanged应该为null,在进行数据绑定时,是谁给赋的值,我代码里边并没有赋值的语句,难道是wpf背后添加的?
解决方案
解决方案二:
回答你第二个问题。当数据绑定时,其它组件(实际上父类的组件)会去查看你的对象有没有实现INotifyPropertyChanged接口,如果实现了就用上了,如果没有实现就不用。
解决方案三:
给你举个例子。不管x是什么类型的对象,可以写vara=xasINotifyPropertyChanged;if(a!=null){a.PropertyChanged+=a_PropertyChanged;}
和voida_PropertyChanged(objectsender,PropertyChangedEventArgse){if(e.PropertyName=="拉拉"){..........}}
这里监测你的x是否通知“属性‘拉拉’改变”。在你的相应的“设置”中,你通常声明在xaml等等代码上“先要监测某一个属性改变,然后调用某一个方法”这种规则。这样wpf就会将你的声明翻译(编译前生成)为上述代码。