Implement Change Notification Using INotifyPropertyChanged in WPF

In this article we will learn how to implement change notification using INotifyPropertyChanged in WPF.

INotifyPropertyChanged was introduced in .NET 2.0. This interface has only one member, the PropertyChanged event that will notify listeners when a property of the implementing class is changed.

Demo

  • Open Visual Studio and select WPF application.
  • Open/add one user control or window.
  • Create one normal property, here I have added FirstName as in the following:
    1. private string firstname = string.Empty;  
    2.   
    3.         public string FristName  
    4.         {  
    5.             get { return firstname; }  
    6.             set  
    7.             {  
    8.                 firstname = value;  
    9.              
    10.             }  
    11.  }  
  • Add the same property into two controls as in the following:
    1. <TextBlock Margin="2">First Name</TextBlock>  
    2. <TextBox Margin="2" Grid.Row="0" Grid.Column="1" MinWidth="120" Text="{Binding Path=FristName,ElementName=ThisControl,UpdateSourceTrigger=PropertyChanged}"></TextBox>  
    3. <TextBlock Margin="2" Grid.Column="2" Text="{Binding Path=FristName,ElementName=ThisControl,UpdateSourceTrigger=PropertyChanged}"></TextBlock>  
  • Run the application, I entered the first name field but not displaying in my TextBlock in the right side.





  • But we can see the property change in the preceding picture. But it's not reflecting it in the UI.
  • Implement the INotifyPropertyChanged interface, no change in the XAML.
    1. public partial class INotify : UserControl, INotifyPropertyChanged  
    2.   
    3.  public INotify()  
    4.  {  
    5.      InitializeComponent();  
    6.  }  
    7.   
    8.  private string firstname = string.Empty;  
    9.   
    10.  public string FristName  
    11.  {  
    12.      get { return firstname; }  
    13.      set  
    14.      {  
    15.          firstname = value;  
    16.          OnPropertyChanged("FristName");  
    17.      }  
    18.  }  
    19.   
    20.  
    21.  #region INotifyPropertyChanged Members  
    22.   
    23.  public event PropertyChangedEventHandler PropertyChanged;  
    24.  public void OnPropertyChanged(string txt)  
    25.  {  
    26.   
    27.      PropertyChangedEventHandler handle = PropertyChanged;  
    28.      if (handle != null)  
    29.      {  
    30.          handle(thisnew PropertyChangedEventArgs(txt));  
    31.      }  
    32.  }  
    33.  #endregion  
  • Run the application and see the change.


  • We got the change in the UI.

Conclusion

The INotifyPropertyChanged interface will notify the source of changes to the target.