INotifyPropertyChanged
quando usado, também permite adicionar mais lógica no código de seus getters e setter de suas propriedades.
DependencyProperty
exemplo:
public static DependencyProperty NameProperty = DependencyProperty.Register( "Name", typeof( String), typeof( Customer ) );
public String Name
{
set { SetValue( NameProperty, value ); }
get { return ( String ) GetValue( NameProperty ); }
}
No seu getter e setter --- tudo o que você pode fazer é simplesmente chamar SetValue e GetValue, respectivamente, b / c em outras partes da estrutura, o getter / setter não é chamado, mas chama diretamente SetValue, GetValue, portanto sua lógica de propriedade não ser executado com segurança.
Com INotifyPropertyChanged
, defina um evento:
public event PropertyChangedEventHandler PropertyChanged;
E então simplesmente tenha qualquer lógica em qualquer lugar do seu código e chame:
// ...
// Something cool...
// ...
if( this.PropertyChanged != null )
{
PropertyChanged( this, new PropertyChangedEventArgs( "Name" ) );
}
// More cool stuff that will reliably happen...
Isso pode ser em um getter / setter ou em qualquer outro lugar.