Ensure we track old selection on removal
This commit is contained in:
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user