Denis Denis - 1 month ago 17
C# Question

INotifyPropertyChanged and propertyName

I was never sure about the meaning of

propertyName
when implementing
INotifyPropertyChanged
. So generally you implement
INotifyPropertyChanged
as:

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");
}
}
}


I was never sure about the
propertyName
argument to
NotifyPropertyChanged(string propertyName)
.


  1. Can that be any arbitrary string (like "MyID" in the above example)?

  2. Or does .NET use Reflection to align it with a property in a class so it has to match the name of the property exactly?

  3. What if the
    propertyName
    doesn't match the name of the
    Property
    exactly, does .NET consider the entire object as
    changed
    ?


hvd hvd
Answer

It's not .NET Framework itself per se, it's pretty much every PropertyChanged subscriber out there (some of which do indeed happen to be distributed as part of the framework) that assumes you use the interface as intended, by sending the property name. If you send a notification that the property MyID has changed, when another component is looking at the property ID, it will typically see the notification, compare the names, and conclude "this notification isn't for me".

Comments