To select only one item in a group at a time, use the ItemSelectionChangingEventArgs event. If more than one item in the same group gets selected, already selected item will be removed from ListView’s SelectedItems.
private void ListView_SelectionChanging(object sender, ItemSelectionChangingEventArgs e)
{
GroupResult actualGroup = null;
object key = null;
var selectedItems = listView.SelectedItems;
//To Cancel the Deselection
if (e.RemovedItems.Count > 0 && selectedItems.Contains(e.RemovedItems[0]))
{
e.Cancel = true;
return;
}
//To return when SelectedItems is zero
if (e.AddedItems.Count <= 0)
return;
var itemData = (e.AddedItems[0] as Contacts);
var descriptor = listView.DataSource.GroupDescriptors[0];
if (descriptor.KeySelector == null)
{
var Collection = new PropertyInfoCollection(itemData.GetType());
key = Collection.GetValue(itemData, descriptor.PropertyName);
}
else
key = descriptor.KeySelector(itemData);
for (int i = 0; i < listView.DataSource.Groups.Count; i++)
{
var group = listView.DataSource.Groups[i];
if ((group.Key != null && group.Key.Equals(key)) || group.Key == key)
{
actualGroup = group;
break;
}
}
if (selectedItems.Count > 0)
{
foreach (var item in actualGroup.Items)
{
var groupItem = item;
if (selectedItems.Contains(groupItem))
{
listView.SelectedItems.Remove(groupItem);
break;
}
}
}
}
To know more about Selection, please refer our documentation here