Yes, this is what all classes implement:
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
So when X changes, OnPropertyChanged of class B gets called and fires the PropertyChanged event. But the higher level class A doesn't get to know anything about this change.
i guess that is because the property of class B changes but not class B itself as property of class A.