|
|
@@ -1,6 +1,7 @@
|
|
|
using System;
|
|
|
using System.Collections;
|
|
|
using System.Collections.Generic;
|
|
|
+using System.Collections.Specialized;
|
|
|
using System.ComponentModel;
|
|
|
using System.Linq;
|
|
|
using Avalonia.Controls.Generators;
|
|
|
@@ -274,27 +275,14 @@ namespace Avalonia.Controls.Primitives
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
- /// <inheritdoc/>
|
|
|
- protected override void ItemsChanged(AvaloniaPropertyChangedEventArgs e)
|
|
|
+ protected override void ItemsCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
|
|
|
{
|
|
|
- base.ItemsChanged(e);
|
|
|
-
|
|
|
- //if (_updateCount == 0)
|
|
|
- //{
|
|
|
- // var newIndex = -1;
|
|
|
+ base.ItemsCollectionChanged(sender, e);
|
|
|
|
|
|
- // if (SelectedIndex != -1)
|
|
|
- // {
|
|
|
- // newIndex = IndexOf((IEnumerable)e.NewValue, SelectedItem);
|
|
|
- // }
|
|
|
-
|
|
|
- // if (AlwaysSelected && Items != null && Items.Cast<object>().Any())
|
|
|
- // {
|
|
|
- // newIndex = 0;
|
|
|
- // }
|
|
|
-
|
|
|
- // SelectedIndex = newIndex;
|
|
|
- //}
|
|
|
+ if (AlwaysSelected && SelectedIndex == -1 && ItemCount > 0)
|
|
|
+ {
|
|
|
+ SelectedIndex = 0;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
@@ -309,9 +297,10 @@ namespace Avalonia.Controls.Primitives
|
|
|
Selection.Select(container.Index);
|
|
|
MarkContainerSelected(container.ContainerControl, true);
|
|
|
}
|
|
|
- else if (Selection.IsSelected(container.Index) == true)
|
|
|
+ else
|
|
|
{
|
|
|
- MarkContainerSelected(container.ContainerControl, true);
|
|
|
+ var selected = Selection.IsSelected(container.Index);
|
|
|
+ MarkContainerSelected(container.ContainerControl, selected);
|
|
|
}
|
|
|
}
|
|
|
}
|