diff --git a/Toolkit.Foundation/ObservableCollection.cs b/Toolkit.Foundation/ObservableCollection.cs index 1c289c3..b691142 100644 --- a/Toolkit.Foundation/ObservableCollection.cs +++ b/Toolkit.Foundation/ObservableCollection.cs @@ -659,6 +659,14 @@ public partial class ObservableCollection : { newSelection.IsSelected = true; } + + Publisher.Publish(Selection.As(SelectedItem)); + OnSelectedItemChanged(); + } + + protected virtual void OnSelectedItemChanged() + { + } private void UpdateSelection(TItem item) @@ -672,7 +680,7 @@ public partial class ObservableCollection : oldSelection.IsSelected = false; } - dispatcher.Invoke(() => SelectedItem = item); + SelectedItem = item; } } } diff --git a/Toolkit.Foundation/Selection.cs b/Toolkit.Foundation/Selection.cs index d0936f0..aeddbd3 100644 --- a/Toolkit.Foundation/Selection.cs +++ b/Toolkit.Foundation/Selection.cs @@ -2,9 +2,9 @@ public record Selection { - public static SelectionEventArgs As(TValue value) => - new(value); + public static SelectionEventArgs As(TSender? sender) => + new(sender); - public static SelectionEventArgs As() where TValue : new() => - new(new TValue()); + public static SelectionEventArgs As() where TSender : new() => + new(new TSender()); } \ No newline at end of file