diff --git a/src/Perspex.Controls/Presenters/CarouselPresenter.cs b/src/Perspex.Controls/Presenters/CarouselPresenter.cs
index 1a7de96a16..5ea2c26c98 100644
--- a/src/Perspex.Controls/Presenters/CarouselPresenter.cs
+++ b/src/Perspex.Controls/Presenters/CarouselPresenter.cs
@@ -103,7 +103,25 @@ namespace Perspex.Controls.Presenters
///
protected override void ItemsChanged(NotifyCollectionChangedEventArgs e)
{
- // TODO: Handle items changing.
+ // TODO: Handle items changing.
+ switch(e.Action)
+ {
+ case NotifyCollectionChangedAction.Remove:
+ if (!IsVirtualized)
+ {
+ var generator = ItemContainerGenerator;
+
+ foreach (var removed in e.OldItems)
+ {
+ var currentContainer = generator.Containers.FirstOrDefault((c) => c.Item == removed);
+ var index = generator.IndexFromContainer(currentContainer.ContainerControl);
+
+ Panel.Children.Remove(currentContainer.ContainerControl);
+ generator.Dematerialize(index, 1);
+ }
+ }
+ break;
+ }
}
///