﻿<?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>