|
|
@@ -639,20 +639,20 @@ namespace Avalonia.Controls.Primitives
|
|
|
/// <param name="desired">The desired items.</param>
|
|
|
internal static void SynchronizeItems(IList items, IEnumerable<object> desired)
|
|
|
{
|
|
|
- int index = 0;
|
|
|
+ var index = 0;
|
|
|
|
|
|
- foreach (var i in desired)
|
|
|
+ foreach (object item in desired)
|
|
|
{
|
|
|
- if (index < items.Count)
|
|
|
+ int itemIndex = items.IndexOf(item);
|
|
|
+
|
|
|
+ if (itemIndex == -1)
|
|
|
{
|
|
|
- if (items[index] != i)
|
|
|
- {
|
|
|
- items[index] = i;
|
|
|
- }
|
|
|
+ items.Insert(index, item);
|
|
|
}
|
|
|
- else
|
|
|
+ else if(itemIndex != index)
|
|
|
{
|
|
|
- items.Add(i);
|
|
|
+ items.RemoveAt(itemIndex);
|
|
|
+ items.Insert(index, item);
|
|
|
}
|
|
|
|
|
|
++index;
|