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
+2 -6
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;
@@ -652,12 +651,9 @@ public partial class ObservableCollection<TItem> :
partial void OnSelectedItemChanged(TItem? oldValue, TItem? newValue) partial void OnSelectedItemChanged(TItem? oldValue, TItem? newValue)
{ {
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)
{ {