From e07e5cead56c41ee3c14ca3f874eeb1a88d59ead Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Wed, 30 Nov 2022 00:16:55 +0100 Subject: [PATCH] Fix container generation logic. --- .../Presenters/PanelContainerGenerator.cs | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/Avalonia.Controls/Presenters/PanelContainerGenerator.cs b/src/Avalonia.Controls/Presenters/PanelContainerGenerator.cs index f1765ba986..ea6276feb4 100644 --- a/src/Avalonia.Controls/Presenters/PanelContainerGenerator.cs +++ b/src/Avalonia.Controls/Presenters/PanelContainerGenerator.cs @@ -66,7 +66,10 @@ namespace Avalonia.Controls.Presenters { var i = index; foreach (var item in items) - panel.Children.Insert(i++, CreateContainer(itemsControl, item, i)); + { + panel.Children.Insert(i, CreateContainer(itemsControl, item, i)); + ++i; + } } void Remove(int index, int count) @@ -106,18 +109,12 @@ namespace Avalonia.Controls.Presenters private static Control CreateContainer(ItemsControl itemsControl, object? item, int index) { var generator = itemsControl.ItemContainerGenerator; + var container = item is Control c && generator.IsItemItsOwnContainer(c) ? + c : generator.CreateContainer(); - if (item is Control c && generator.IsItemItsOwnContainer(c)) - { - return c; - } - else - { - c = generator.CreateContainer(); - itemsControl.AddLogicalChild(c); - generator.PrepareItemContainer(c, item, index); - return c; - } + itemsControl.AddLogicalChild(container); + generator.PrepareItemContainer(container, item, index); + return container; } } }