Solution:
Add a flag, use the SelectionChanged event and multiple selection. And implement a check so when item is selected to be removed from the selected items collection or set the SelectedItem to null.
xaml:
<telerik:RadCollectionView x:Name="collectionView"
SelectionMode="Multiple"
SelectionChanged="collectionView_SelectionChanged"
ItemsSource="{Binding Locations}"
DisplayMemberPath="City"/>cs:
public partial class MainPage : ContentPage
{
ViewModel vm;
private bool isUpdatingSelection;
private object? lastSelectedItem;
public MainPage()
{
InitializeComponent();
this.vm = new ViewModel();
this.BindingContext = this.vm;
}
private void collectionView_SelectionChanged(object sender, Telerik.Maui.RadSelectionChangedEventArgs e)
{
if (this.isUpdatingSelection)
{
return;
}
this.isUpdatingSelection = true;
try
{
var selectedItems = this.collectionView.SelectedItems;
if (e.AddedItems.Any())
{
var currentItem = e.AddedItems.Last();
if (ReferenceEquals(currentItem, this.lastSelectedItem))
{
selectedItems.Remove(currentItem);
this.collectionView.SelectedItem = null;
this.lastSelectedItem = null;
return;
}
if (selectedItems.Count > 1)
{
selectedItems.Clear();
selectedItems.Add(currentItem);
}
this.collectionView.SelectedItem = currentItem;
this.lastSelectedItem = currentItem;
return;
}
if (selectedItems.Count == 0)
{
this.collectionView.SelectedItem = null;
this.lastSelectedItem = null;
}
}
finally
{
this.isUpdatingSelection = false;
}
}
}Regards,
Didi
Progress Telerik