Your
public PropertyChangedEventHandler PropertyChanged;
defines PropertyChanged
as a field, which happens to be a field of delegate type, but a field nonetheless. INotifyPropertyChanged
expectes an event.
public event PropertyChangedEventHandler PropertyChanged;
^^^^^