Browse Source

fix for carousel presenter in isvirtualized = false

danwalmsley 9 years ago
parent
commit
9940464fa1
1 changed files with 19 additions and 1 deletions
  1. 19 1
      src/Perspex.Controls/Presenters/CarouselPresenter.cs

+ 19 - 1
src/Perspex.Controls/Presenters/CarouselPresenter.cs

@@ -103,7 +103,25 @@ namespace Perspex.Controls.Presenters
         /// <inheritdoc/>
         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;
+            }
         }
 
         /// <summary>