From 9940464fa192c38ee77dd037f2a01ec695c249e0 Mon Sep 17 00:00:00 2001 From: danwalmsley Date: Tue, 19 Apr 2016 13:06:30 +0100 Subject: [PATCH] fix for carousel presenter in isvirtualized = false --- .../Presenters/CarouselPresenter.cs | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) 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; + } } ///