INotifyPropertyChanged
при использовании также дает вам возможность добавить больше логики в код ваших получателей и установщик ваших свойств.
DependencyProperty
пример:
public static DependencyProperty NameProperty = DependencyProperty.Register( "Name", typeof( String), typeof( Customer ) );
public String Name
{
set { SetValue( NameProperty, value ); }
get { return ( String ) GetValue( NameProperty ); }
}
В вашем getter и setter --- все, что вы можете сделать, это просто вызвать SetValue и GetValue соответственно, b / c, в других частях фреймворка getter / setter не вызывается, вместо этого он напрямую вызывает SetValue, GetValue, так что ваш логика свойств не может быть надежно выполнена.
С помощью INotifyPropertyChanged
определите событие:
public event PropertyChangedEventHandler PropertyChanged;
А потом просто используйте любую логику в любом месте вашего кода, затем позвоните:
// ...
// Something cool...
// ...
if( this.PropertyChanged != null )
{
PropertyChanged( this, new PropertyChangedEventArgs( "Name" ) );
}
// More cool stuff that will reliably happen...
Это может быть в методе получения / установки или где-либо еще.