<?xml version="1.0" encoding="utf-8"?>
<Type Name="INotifyPropertyChanged" FullName="System.ComponentModel.INotifyPropertyChanged">
  <TypeSignature Language="C#" Value="public interface INotifyPropertyChanged" />
  <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract INotifyPropertyChanged" />
  <AssemblyInfo>
    <AssemblyName>System</AssemblyName>
    <AssemblyVersion>2.0.0.0</AssemblyVersion>
    <AssemblyVersion>4.0.0.0</AssemblyVersion>
  </AssemblyInfo>
  <Interfaces />
  <Docs>
    <since version=".NET 2.0" />
    <remarks>
      <attribution license="cc4" from="Microsoft" modified="false" />
      <para>The <see cref="T:System.ComponentModel.INotifyPropertyChanged" /> interface is used to notify clients, typically binding clients, that a property value has changed.</para>
      <para>For example, consider a Person object with a property called FirstName. To provide generic property-change notification, the Person type implements the <see cref="T:System.ComponentModel.INotifyPropertyChanged" /> interface and raises a <see cref="E:System.ComponentModel.INotifyPropertyChanged.PropertyChanged" /> event when FirstName is changed.</para>
      <para>For change notification to occur in a binding between a bound client and a data source, your bound type should either:</para>
      <list type="bullet">
        <item>
          <para>Implement the <see cref="T:System.ComponentModel.INotifyPropertyChanged" /> interface (preferred).</para>
        </item>
        <item>
          <para>Provide a change event for each property of the bound type.</para>
        </item>
      </list>
      <para>Do not do both.</para>
    </remarks>
    <summary>
      <attribution license="cc4" from="Microsoft" modified="false" />
      <para>Notifies clients that a property value has changed.</para>
    </summary>
  </Docs>
  <Members>
    <Member MemberName="PropertyChanged">
      <MemberSignature Language="C#" Value="public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;" />
      <MemberSignature Language="ILAsm" Value=".event class System.ComponentModel.PropertyChangedEventHandler PropertyChanged" />
      <MemberType>Event</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <ReturnValue>
        <ReturnType>System.ComponentModel.PropertyChangedEventHandler</ReturnType>
      </ReturnValue>
      <Docs>
        <since version=".NET 2.0" />
        <remarks>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>The <see cref="E:System.ComponentModel.INotifyPropertyChanged.PropertyChanged" /> event can indicate all properties on the object have changed by using either null or <see cref="F:System.String.Empty" /> as the property name in the <see cref="T:System.ComponentModel.PropertyChangedEventArgs" />.</para>
        </remarks>
        <summary>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>Occurs when a property value changes.</para>
        </summary>
      </Docs>
    </Member>
  </Members>
</Type>