Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

INotifyPropertyChanged.PropertyChanged Event

Definition

Namespace:
System.ComponentModel
Assemblies:
System.dll, System.ObjectModel.dll
Assemblies:
netstandard.dll, System.ObjectModel.dll
Assembly:
System.ObjectModel.dll
Assembly:
System.dll
Assembly:
netstandard.dll
Source:
INotifyPropertyChanged.cs
Source:
INotifyPropertyChanged.cs
Source:
ReadOnlyObservableCollection.cs

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

Occurs when a property value changes.

public:
 event System::ComponentModel::PropertyChangedEventHandler ^ PropertyChanged;
event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
event System.ComponentModel.PropertyChangedEventHandler? PropertyChanged;
member this.PropertyChanged : System.ComponentModel.PropertyChangedEventHandler 
Event PropertyChanged As PropertyChangedEventHandler 

Event Type

Examples

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

// This is a simple customer class that 
// implements the IPropertyChange interface.
public class DemoCustomer : INotifyPropertyChanged
{
 // These fields hold the values for the public properties.
 private Guid idValue = Guid.NewGuid();
 private string customerNameValue = string.Empty;
 private string phoneNumberValue = string.Empty;

 public event PropertyChangedEventHandler PropertyChanged;

 // This method is called by the Set accessor of each property.
 // The CallerMemberName attribute that is applied to the optional propertyName
 // parameter causes the property name of the caller to be substituted as an argument.
 private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
 {
 if (PropertyChanged != null)
 {
 PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
 }
 }

 // The constructor is private to enforce the factory pattern.
 private DemoCustomer()
 {
 customerNameValue = "Customer";
 phoneNumberValue = "(312)555-0100";
 }

 // This is the public factory method.
 public static DemoCustomer CreateNewCustomer()
 {
 return new DemoCustomer();
 }

 // This property represents an ID, suitable
 // for use as a primary key in a database.
 public Guid ID
 {
 get
 {
 return this.idValue;
 }
 }

 public string CustomerName
 {
 get
 {
 return this.customerNameValue;
 }

 set
 {
 if (value != this.customerNameValue)
 {
 this.customerNameValue = value;
 NotifyPropertyChanged();
 }
 }
 }

 public string PhoneNumber
 {
 get
 {
 return this.phoneNumberValue;
 }

 set
 {
 if (value != this.phoneNumberValue)
 {
 this.phoneNumberValue = value;
 NotifyPropertyChanged();
 }
 }
 }
}
' This class implements a simple customer type 
' that implements the IPropertyChange interface.
Public Class DemoCustomer
 Implements INotifyPropertyChanged

 ' These fields hold the values for the public properties.
 Private idValue As Guid = Guid.NewGuid()
 Private customerNameValue As String = String.Empty
 Private phoneNumberValue As String = String.Empty

 Public Event PropertyChanged As PropertyChangedEventHandler _
 Implements INotifyPropertyChanged.PropertyChanged

 ' This method is called by the Set accessor of each property.
 ' The CallerMemberName attribute that is applied to the optional propertyName
 ' parameter causes the property name of the caller to be substituted as an argument.
 Private Sub NotifyPropertyChanged(<CallerMemberName()> Optional ByVal propertyName As String = Nothing)
 RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName))
 End Sub

 ' The constructor is private to enforce the factory pattern.
 Private Sub New()
 customerNameValue = "Customer"
 phoneNumberValue = "(312)555-0100"
 End Sub

 ' This is the public factory method.
 Public Shared Function CreateNewCustomer() As DemoCustomer
 Return New DemoCustomer()
 End Function

 ' This property represents an ID, suitable
 ' for use as a primary key in a database.
 Public ReadOnly Property ID() As Guid
 Get
 Return Me.idValue
 End Get
 End Property

 Public Property CustomerName() As String
 Get
 Return Me.customerNameValue
 End Get

 Set(ByVal value As String)
 If Not (value = customerNameValue) Then
 Me.customerNameValue = value
 NotifyPropertyChanged()
 End If
 End Set
 End Property

 Public Property PhoneNumber() As String
 Get
 Return Me.phoneNumberValue
 End Get

 Set(ByVal value As String)
 If Not (value = phoneNumberValue) Then
 Me.phoneNumberValue = value
 NotifyPropertyChanged()
 End If
 End Set
 End Property
End Class

Remarks

The PropertyChanged event can indicate all properties on the object have changed by using either null or String.Empty as the property name in the PropertyChangedEventArgs. Note that in a UWP application, String.Empty must be used rather than null.

Applies to

See also


Feedback

Was this page helpful?