INotifyPropertyChanged Interface

[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]

Notifies clients that a property value has changed.

Namespace: System.ComponentModel
Assembly: System (in System.dll)

Syntax

Public Interface INotifyPropertyChanged
public interface INotifyPropertyChanged

The INotifyPropertyChanged type exposes the following members.

Events

Name Description
PropertyChanged Occurs when a property value changes.

Top

Remarks

The INotifyPropertyChanged interface is used to notify clients, typically binding clients, that a property value has changed.

For example, consider a Person object with a property called FirstName. To provide generic property-change notification, the Person type implements the INotifyPropertyChanged interface and raises a PropertyChanged event when FirstName is changed.

Examples

The following code example demonstrates the how to implement the INotifyPropertyChanged interface.

'Add Imports statements 
Imports System.ComponentModel
Imports System.Windows.Data


...


' Create a class that implements INotifyPropertyChanged 
Public Class Person
    Implements INotifyPropertyChanged

    Private firstNameValue As String

    Public Property FirstName() As String
        Get
            Return firstNameValue
        End Get

        Set(ByVal value As String)

            ' Only update if the value has changed
            If (value <> firstNameValue) Then
                firstNameValue = value

                ' Call NotifyPropertyChanged when the property is updated 
                NotifyPropertyChanged("FirstName")
            End If
        End Set
    End Property

    ' Declare the PropertyChanged event 
    Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged

    ' NotifyPropertyChanged will raise the PropertyChanged event passing the 
    ' source property that is being updated. 
    Public Sub NotifyPropertyChanged(ByVal propertyName As String)
        RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName))
    End Sub
End Class
//Add using statements
using System.ComponentModel;
using Microsoft.Phone.Controls;


...


// Create a class that implements INotifyPropertyChanged
public class Person : INotifyPropertyChanged
{
    private string firstNameValue;

    public string FirstName{
        get { return firstNameValue; }

        set
        {
            // Only update value if it changed
            if (value != firstNameValue)
            {
                firstNameValue = value;

                // Call NotifyPropertyChanged when the property is updated
                NotifyPropertyChanged("FirstName");
            }
        }
    }

    // Declare the PropertyChanged event
    public event PropertyChangedEventHandler PropertyChanged;

    // NotifyPropertyChanged will raise the PropertyChanged event passing the
    // source property that is being updated.
    public void NotifyPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }  
}

Version Information

Windows Phone OS

Supported in: 8.1, 8.0, 7.1, 7.0

Platforms

Windows Phone

See Also

Reference

System.ComponentModel Namespace

Other Resources

Data binding for Windows Phone 8