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 ); }
}
В вашем геттере и сеттере - все, что вы можете сделать, это просто вызвать SetValue и GetValue соответственно, b / c в других частях фреймворка геттер / сеттер не вызывается, вместо этого он напрямую вызывает 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...
Это может быть геттер / сеттер или где-нибудь еще.
person
Adam
schedule
13.02.2009
INotifyPropertyChanged
.net 4.5. - person Daniel Little   schedule 17.09.2012