You need Person
to implement INotifyPropertyChanged
too, then register to the two properties you have. Once PropertyChanged
is invoked with Salary
on either of them, invoke PropertyChanged
on CalculatedProperty
void PersonPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if(e.PropertyName == "Salary")
OnPropertyChanged("CalculatedProperty");
}
Just remember to unregister when person is changed.
UPDATE:
As Jim said, your setter should look something like this:
private Person _person;
public Person Person
{
get { return _person; }
set
{
if (Equals(value, _person)) return;
if (_person != null)
_person.PropertyChanged -= PersonPropertyChanged;
_person = value;
if(_person != null)
_person.PropertyChanged += PersonPropertyChanged;
OnPropertyChanged("Person");
}
}