# EnumerableChangedHandler<TItem> class

Namespace: [Eto](https://eto.picoe.ca/api/namespace/eto.md) · Assembly: [Eto](https://eto.picoe.ca/api/assembly/eto.md)

```cs
public abstract class EnumerableChangedHandler<TItem> : EnumerableChangedHandler<TItem, IEnumerable<TItem>>
```

Helper class to handle collection change events of an [IEnumerable](https://learn.microsoft.com/dotnet/api/system.collections.ienumerable)

**Remarks:** This is used for the platform handler of controls that use collections. This class helps detect changes to a collection so that the appropriate action can be taken to update the UI with the changes. Use this class as a base when you only have an [IEnumerable](https://learn.microsoft.com/dotnet/api/system.collections.ienumerable). If the object also implements [INotifyCollectionChanged](https://learn.microsoft.com/dotnet/api/system.collections.specialized.inotifycollectionchanged) it will get changed events otherwise you must register a new collection each time.

**Type parameters:**

- `TItem`: Type of each item in the enumerable

## Inherited Members

- From [EnumerableChangedHandler<TItem, TCollection>](https://eto.picoe.ca/api/type/eto.enumerablechangedhandler-2.md): [Count](https://eto.picoe.ca/api/type/eto.enumerablechangedhandler-2/count.md), [InitializeCollection](https://eto.picoe.ca/api/type/eto.enumerablechangedhandler-2/initializecollection.md), [InternalElementAt](https://eto.picoe.ca/api/type/eto.enumerablechangedhandler-2/internalelementat.md), [InternalIndexOf](https://eto.picoe.ca/api/type/eto.enumerablechangedhandler-2/internalindexof.md), [OnRegisterCollection](https://eto.picoe.ca/api/type/eto.enumerablechangedhandler-2/onregistercollection.md)
- From [CollectionChangedHandler<TItem, TCollection>](https://eto.picoe.ca/api/type/eto.collectionchangedhandler-2.md): [Collection](https://eto.picoe.ca/api/type/eto.collectionchangedhandler-2/collection.md), [AddItem](https://eto.picoe.ca/api/type/eto.collectionchangedhandler-2/additem.md), [AddRange](https://eto.picoe.ca/api/type/eto.collectionchangedhandler-2/addrange.md), [BeginUpdates](https://eto.picoe.ca/api/type/eto.collectionchangedhandler-2/beginupdates.md), [ElementAt](https://eto.picoe.ca/api/type/eto.collectionchangedhandler-2/elementat.md), [EndUpdates](https://eto.picoe.ca/api/type/eto.collectionchangedhandler-2/endupdates.md), [IndexOf](https://eto.picoe.ca/api/type/eto.collectionchangedhandler-2/indexof.md), [InsertItem](https://eto.picoe.ca/api/type/eto.collectionchangedhandler-2/insertitem.md), [InsertRange](https://eto.picoe.ca/api/type/eto.collectionchangedhandler-2/insertrange.md), [OnUnregisterCollection](https://eto.picoe.ca/api/type/eto.collectionchangedhandler-2/onunregistercollection.md), [Register](https://eto.picoe.ca/api/type/eto.collectionchangedhandler-2/register.md), [RemoveAllItems](https://eto.picoe.ca/api/type/eto.collectionchangedhandler-2/removeallitems.md), [RemoveItem](https://eto.picoe.ca/api/type/eto.collectionchangedhandler-2/removeitem.md), [RemoveRange](https://eto.picoe.ca/api/type/eto.collectionchangedhandler-2/removerange.md), [ReplaceItem](https://eto.picoe.ca/api/type/eto.collectionchangedhandler-2/replaceitem.md), [ReplaceRange](https://eto.picoe.ca/api/type/eto.collectionchangedhandler-2/replacerange.md), [Reset](https://eto.picoe.ca/api/type/eto.collectionchangedhandler-2/reset.md), [Unregister](https://eto.picoe.ca/api/type/eto.collectionchangedhandler-2/unregister.md)
