Ensure we track old selection on removal

This commit is contained in:
TheXamlGuy
2024-07-06 21:31:04 +01:00
parent 2ef2c4b30a
commit a4e77ef293
+3 -7
View File
@@ -168,7 +168,6 @@ public partial class ObservableCollection<TItem> :
}, parameters); }, parameters);
Add(item); Add(item);
return item; return item;
} }
@@ -401,7 +400,6 @@ public partial class ObservableCollection<TItem> :
pendingEvents.Enqueue(args); pendingEvents.Enqueue(args);
} }
return Task.CompletedTask; return Task.CompletedTask;
} }
@@ -529,9 +527,10 @@ public partial class ObservableCollection<TItem> :
Disposer.Dispose(item); Disposer.Dispose(item);
Disposer.Remove(this, item); Disposer.Remove(this, item);
TItem? oldSelection = SelectedItem;
RemoveItem(index); RemoveItem(index);
if (item.Equals(SelectedItem)) if (item.Equals(oldSelection))
{ {
int newIndex = Math.Min(index, Count - 1); int newIndex = Math.Min(index, Count - 1);
TItem? selectedItem = newIndex >= 0 ? this[newIndex] : default; TItem? selectedItem = newIndex >= 0 ? this[newIndex] : default;
@@ -653,10 +652,7 @@ public partial class ObservableCollection<TItem> :
{ {
if (oldValue is ISelectable oldSelection) if (oldValue is ISelectable oldSelection)
{ {
if (oldSelection.IsSelected) oldSelection.IsSelected = false;
{
oldSelection.IsSelected = false;
}
} }
if (newValue is ISelectable newSelection) if (newValue is ISelectable newSelection)