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; + } } ///