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)
.
propertyName
doesn't match the name of the Property
exactly, does .NET consider the entire object as changed
?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".