Browse Source

Fix container generation logic.

pull/9677/head
Steven Kirk 4 years ago
parent
commit
e07e5cead5
  1. 21
      src/Avalonia.Controls/Presenters/PanelContainerGenerator.cs

21
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;
}
}
}

Loading…
Cancel
Save