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.