diff --git a/src/Avalonia.Controls/Presenters/CarouselPresenter.cs b/src/Avalonia.Controls/Presenters/CarouselPresenter.cs index 3ae9a77587..72a3e7404a 100644 --- a/src/Avalonia.Controls/Presenters/CarouselPresenter.cs +++ b/src/Avalonia.Controls/Presenters/CarouselPresenter.cs @@ -114,6 +114,8 @@ namespace Avalonia.Controls.Presenters var generator = ItemContainerGenerator; var containers = generator.RemoveRange(e.OldStartingIndex, e.OldItems.Count); Panel.Children.RemoveAll(containers.Select(x => x.ContainerControl)); + + MoveToPage(-1, 0); } break; @@ -125,25 +127,9 @@ namespace Avalonia.Controls.Presenters generator.Clear(); Panel.Children.RemoveAll(containers.Select(x => x.ContainerControl)); - PanelCreated(Panel); - } - break; - - case NotifyCollectionChangedAction.Replace: - if (!IsVirtualized) - { - for (var i = 0; i < e.OldItems.Count; ++i) - { - var index = i + e.OldStartingIndex; - var child = (IControl)e.NewItems[i]; - Panel.Children[index] = child; - } + MoveToPage(-1, 0); } - break; - - case NotifyCollectionChangedAction.Move: - Panel.Children.MoveRange(e.OldStartingIndex, e.OldItems.Count, e.NewStartingIndex); - break; + break; } }