diff --git a/src/UraniumUI.Material/Controls/MultiplePickerField.cs b/src/UraniumUI.Material/Controls/MultiplePickerField.cs index 549e1fbb..d0cbffa2 100644 --- a/src/UraniumUI.Material/Controls/MultiplePickerField.cs +++ b/src/UraniumUI.Material/Controls/MultiplePickerField.cs @@ -2,6 +2,7 @@ using System.Collections; using System.Collections.ObjectModel; using System.Collections.Specialized; +using System.Windows.Input; using UraniumUI.Dialogs; namespace UraniumUI.Material.Controls; @@ -24,6 +25,8 @@ protected set public override bool HasValue { get => IsBusy || SelectedItems?.Count > 0; } + public event EventHandler SelectedValuesChanged; + protected IDialogService DialogService { get; } protected FlexLayout chipsHolderLayout; @@ -133,6 +136,8 @@ protected virtual void OnSelectedItemsSet(IList oldValue, IList newValue) private void SelectedItemsChanged(object sender, NotifyCollectionChangedEventArgs e) { UpdateState(); + SelectedValuesChangedCommand?.Execute(SelectedItems); + SelectedValuesChanged?.Invoke(sender, SelectedItems); } public IList ItemsSource { get => (IList)GetValue(ItemsSourceProperty); set => SetValue(ItemsSourceProperty, value); } @@ -150,4 +155,11 @@ private void SelectedItemsChanged(object sender, NotifyCollectionChangedEventArg typeof(IList), typeof(MultiplePickerField), propertyChanged: (bindable, oldValue, newValue) => (bindable as MultiplePickerField).OnSelectedItemsSet(oldValue as IList, newValue as IList)); + + public ICommand SelectedValuesChangedCommand { get => (ICommand)GetValue(SelectedValuesChangedCommandProperty); set => SetValue(SelectedValuesChangedCommandProperty, value); } + + public static readonly BindableProperty SelectedValuesChangedCommandProperty = BindableProperty.Create( + nameof(SelectedValuesChangedCommand), + typeof(ICommand), typeof(MultiplePickerField), + defaultValue: null); } \ No newline at end of file