From 2e9c19beaf650d746a3283464e653609e37bab81 Mon Sep 17 00:00:00 2001 From: danwalmsley Date: Tue, 31 May 2016 17:12:52 +0100 Subject: [PATCH] Throw not implemented exception placeholder. --- .../Presenters/ItemVirtualizerSimple.cs | 32 +++++++++++++++---- 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/src/Avalonia.Controls/Presenters/ItemVirtualizerSimple.cs b/src/Avalonia.Controls/Presenters/ItemVirtualizerSimple.cs index 1ff85c50ac..b2c72174d3 100644 --- a/src/Avalonia.Controls/Presenters/ItemVirtualizerSimple.cs +++ b/src/Avalonia.Controls/Presenters/ItemVirtualizerSimple.cs @@ -42,7 +42,7 @@ namespace Avalonia.Controls.Presenters if (panel.PixelOffset > 0) { panel.PixelOffset = 0; - delta += 1; + delta += 1; } if (delta != 0) @@ -87,6 +87,18 @@ namespace Avalonia.Controls.Presenters switch (e.Action) { + case NotifyCollectionChangedAction.Remove: + if (e.OldStartingIndex == ItemCount) + { + NextIndex = ItemCount - 1; + + throw new NotImplementedException("Remove the last item from the panel."); + } + + CreateRemoveContainers(); + RecycleContainers(); + break; + case NotifyCollectionChangedAction.Add: if (e.NewStartingIndex >= FirstIndex && e.NewStartingIndex + e.NewItems.Count < NextIndex) @@ -183,17 +195,25 @@ namespace Avalonia.Controls.Presenters foreach (var container in containers) { - var item = Items.ElementAt(itemIndex); - - if (!object.Equals(container.Item, item)) + if (itemIndex < ItemCount) { - if (!generator.TryRecycle(itemIndex, itemIndex, item, selector)) + var item = Items.ElementAt(itemIndex); + + if (!object.Equals(container.Item, item)) { - throw new NotImplementedException(); + if (!generator.TryRecycle(itemIndex, itemIndex, item, selector)) + { + throw new NotImplementedException(); + } } } + else + { + panel.Children.RemoveAt(panel.Children.Count - 1); + } ++itemIndex; + } }