我从不知道实现propertyNameINotifyPropertyChanged的含义。因此,通常将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");
                  }
   }
}


我从不知道propertyNameNotifyPropertyChanged(string propertyName)参数。


可以是任意字符串(例如上例中的“ MyID”)吗?
还是.NET使用Reflection使其与类中的属性对齐,以便它必须与属性名称完全匹配?
如果propertyNameProperty的名称不完全一样,.NET是否会将整个对象视为changed

最佳答案

它本身不是.NET Framework本身,实际上是每个PropertyChanged订阅者(其中某些确实确实是作为框架的一部分分发的)都假定您通过发送属性名称按预期使用了接口。如果您发送属性MyID更改的通知,则当另一个组件查看属性ID时,它通常会看到该通知,比较名称,并得出“此通知不适合我”的结论。

关于c# - INotifyPropertyChanged和propertyName,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40163085/

10-10 14:20