More crazy edge cases

This commit is contained in:
TheXamlGuy
2024-05-21 23:28:19 +01:00
parent 4c2bc8e628
commit 76781ddc7b
+14 -4
View File
@@ -289,7 +289,7 @@ public partial class ObservableCollection<TItem> :
if (selectable.Selected) if (selectable.Selected)
{ {
SelectedItem = item; SelectedItem = item;
SelectedIndex = this.IndexOf(item); SelectedIndex = IndexOf(item);
} }
} }
} }
@@ -312,6 +312,7 @@ public partial class ObservableCollection<TItem> :
return Task.CompletedTask; return Task.CompletedTask;
} }
public Task Handle(ReplaceEventArgs<TItem> args) public Task Handle(ReplaceEventArgs<TItem> args)
{ {
if (args.Value is TItem item) if (args.Value is TItem item)
@@ -332,6 +333,11 @@ public partial class ObservableCollection<TItem> :
return Task.CompletedTask; return Task.CompletedTask;
} }
public Task Handle(SelectionEventArgs<TItem> args)
{
return Task.CompletedTask;
}
public int IndexOf(TItem item) => public int IndexOf(TItem item) =>
collection.IndexOf(item); collection.IndexOf(item);
@@ -378,6 +384,7 @@ public partial class ObservableCollection<TItem> :
return true; return true;
} }
public bool Move(int index, TItem item) public bool Move(int index, TItem item)
{ {
int oldIndex = collection.IndexOf(item); int oldIndex = collection.IndexOf(item);
@@ -490,7 +497,7 @@ public partial class ObservableCollection<TItem> :
partial void OnSelectedIndexChanged(int oldValue, int newValue) partial void OnSelectedIndexChanged(int oldValue, int newValue)
{ {
if (oldValue >= 0 && oldValue <= this.Count -1 && this[oldValue] is ISelectable removed) if (oldValue >= 0 && oldValue <= this.Count - 1 && this[oldValue] is ISelectable removed)
{ {
removed.Selected = false; removed.Selected = false;
} }
@@ -501,9 +508,12 @@ public partial class ObservableCollection<TItem> :
} }
} }
public Task Handle(SelectionEventArgs<TItem> args) partial void OnSelectedItemChanged(TItem? oldValue, TItem? newValue)
{ {
return Task.CompletedTask; if (oldValue is ISelectable selectable)
{
selectable.Selected = false;
}
} }
} }