我从不知道实现propertyName
时INotifyPropertyChanged
的含义。因此,通常将INotifyPropertyChanged
实现为:
public class Data : INotifyPropertyChanged {
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string propertyName = "") {
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
private string itsID;
public string ID {
get { return itsID; }
set {
if (itsID != value) {
itsID = value;
NotifyPropertyChanged("ID");
}
}
}
我从不知道
propertyName
的NotifyPropertyChanged(string propertyName)
参数。可以是任意字符串(例如上例中的“ MyID”)吗?
还是.NET使用Reflection使其与类中的属性对齐,以便它必须与属性名称完全匹配?
如果
propertyName
与Property
的名称不完全一样,.NET是否会将整个对象视为changed
? 最佳答案
它本身不是.NET Framework本身,实际上是每个PropertyChanged
订阅者(其中某些确实确实是作为框架的一部分分发的)都假定您通过发送属性名称按预期使用了接口。如果您发送属性MyID
更改的通知,则当另一个组件查看属性ID
时,它通常会看到该通知,比较名称,并得出“此通知不适合我”的结论。
关于c# - INotifyPropertyChanged和propertyName,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40163085/