<?xml version="1.0" encoding="utf-8"?>
<Type Name="INotifyCollectionChanged" FullName="System.Collections.Specialized.INotifyCollectionChanged">
  <TypeSignature Language="C#" Value="public interface INotifyCollectionChanged" />
  <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract INotifyCollectionChanged" />
  <AssemblyInfo>
    <AssemblyName>System</AssemblyName>
    <AssemblyVersion>4.0.0.0</AssemblyVersion>
  </AssemblyInfo>
  <Interfaces />
  <Attributes>
    <Attribute>
      <AttributeName>System.Runtime.CompilerServices.TypeForwardedFrom("WindowsBase, Version=3.0.0.0, PublicKeyToken=31bf3856ad364e35")</AttributeName>
    </Attribute>
  </Attributes>
  <Docs>
    <remarks>
      <attribution license="cc4" from="Microsoft" modified="false" />
      <para>You can enumerate over any collection that implements the <see cref="T:System.Collections.IEnumerable" /> interface. However, to set up dynamic bindings so that insertions or deletions in the collection update the TLA2#tla_ui automatically, the collection must implement the <see cref="T:System.Collections.Specialized.INotifyCollectionChanged" /> interface. This interface exposes the <see cref="E:System.Collections.Specialized.INotifyCollectionChanged.CollectionChanged" /> event that must be raised whenever the underlying collection changes.</para>
      <para>TLA2#tla_winclient provides the <see cref="T:System.Collections.ObjectModel.ObservableCollection`1" /> class, which is a built-in implementation of a data collection that exposes the <see cref="T:System.Collections.Specialized.INotifyCollectionChanged" /> interface. For an example, see <format type="text/html"><a href="6cf7e275-df76-41c6-a611-53b889b8fd5a">Implement an Observable Collection</a></format>.</para>
      <para>The individual data objects within the collection must satisfy the requirements described in the <format type="text/html"><a href="2df2cd11-6aac-4bdf-ab7b-ea5f464cd5ca">Binding Sources Overview</a></format>.</para>
      <para>Before implementing your own collection, consider using <see cref="T:System.Collections.ObjectModel.ObservableCollection`1" /> or one of the existing collection classes, such as <see cref="T:System.Collections.Generic.List`1" />, <see cref="T:System.Collections.ObjectModel.Collection`1" />, and <see cref="T:System.ComponentModel.BindingList`1" />, among many others.</para>
      <para>If you have an advanced scenario and want to implement your own collection, consider using <see cref="T:System.Collections.IList" />, which provides a non-generic collection of objects that can be individually accessed by index and provides the best performance.</para>
    </remarks>
    <summary>
      <attribution license="cc4" from="Microsoft" modified="false" />
      <para>Notifies listeners of dynamic changes, such as when items get added and removed or the whole list is refreshed.</para>
    </summary>
  </Docs>
  <Members>
    <Member MemberName="CollectionChanged">
      <MemberSignature Language="C#" Value="public event System.Collections.Specialized.NotifyCollectionChangedEventHandler CollectionChanged;" />
      <MemberSignature Language="ILAsm" Value=".event class System.Collections.Specialized.NotifyCollectionChangedEventHandler CollectionChanged" />
      <MemberType>Event</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <ReturnValue>
        <ReturnType>System.Collections.Specialized.NotifyCollectionChangedEventHandler</ReturnType>
      </ReturnValue>
      <Docs>
        <remarks>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>The event handler receives an argument of type <see cref="T:System.Collections.Specialized.NotifyCollectionChangedEventArgs" />,which contains data that is related to this event.</para>
        </remarks>
        <summary>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>Occurs when the collection changes.</para>
        </summary>
      </Docs>
    </Member>
  </Members>
</Type>