Unplanned
Last Updated: 12 Jun 2026 10:47 by ADMIN
Benjamin
Created on: 12 Jun 2026 09:50
Category: CollectionView
Type: Feature Request
0
CollectionView: Provide a single deselect option when tapping the selected item again to be deselected
Similar to the SegmentedControl https://www.telerik.com/maui-ui/documentation/controls/segmentedcontrol/selection#selection-modes , provide a single deselect SelectionMode option for the CollectionView. 
1 comment
ADMIN
Didi
Posted on: 12 Jun 2026 10:47

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