public async Task ToggleChecked(TItem item) { if (IsChecked(item) == true) { checkedItems.Remove(item); CheckAll(ChildSelector(item), false); } else { checkedItems.Add(item); CheckAll(ChildSelector(item), true); } await CheckedItemsChanged.InvokeAsync(checkedItems); StateHasChanged(); }
/// <summary> /// Update the list of selected items based on the list of Checked items in the ListView /// Maintain this list dynamically because of how filtering has been implemented. /// </summary> private void UpdateSelectedItemsList() { if (_performingBulkSelection) { return; } if (CheckedItems == null) { CheckedItems = new List <object>(); } if (ListViewMain.CheckedItems.Count == 0) { CheckedItems.Clear(); } else { foreach (ListViewItem listItem in ListViewMain.Items) { var item = listItem.Tag; if (listItem.Checked) { // if not already added, add the checked item if (!CheckedItems.Contains(item)) { CheckedItems.Add(item); } } else { // if already added, then remove it if (CheckedItems.Contains(item)) { CheckedItems.Remove(item); } } } } CheckedItemsChanged?.Invoke(this, new EventArgs()); }