INotifyPropertyChanged khi được sử dụng cũng cung cấp cho bạn khả năng thêm logic hơn trong mã của getters và setter của các thuộc tính của bạn.
DependencyProperty thí dụ:
public static DependencyProperty NameProperty = DependencyProperty.Register( "Name", typeof( String), typeof( Customer ) );
public String Name
{
set { SetValue( NameProperty, value ); }
get { return ( String ) GetValue( NameProperty ); }
}
Trong getter và setter của bạn --- tất cả những gì bạn có thể làm chỉ đơn giản là gọi SetValue và GetValue tương ứng, b / c trong các phần khác của khung mà getter / setter không được gọi, thay vào đó nó gọi trực tiếp SetValue, GetValue, do đó logic thuộc tính của bạn sẽ không đáng tin cậy được thực hiện.
Với INotifyPropertyChanged, xác định một sự kiện:
public event PropertyChangedEventHandler PropertyChanged;
Và sau đó chỉ cần có bất kỳ logic nào ở bất kỳ đâu trong mã của bạn, sau đó gọi:
// ...
// Something cool...
// ...
if( this.PropertyChanged != null )
{
PropertyChanged( this, new PropertyChangedEventArgs( "Name" ) );
}
// More cool stuff that will reliably happen...
Điều này có thể là trong một getter / setter, hoặc bất cứ nơi nào khác.