public void CheckboxClicked(TId selectedId, object?value) { if ((bool?)value == true) { if (!SelectedIds.Contains(selectedId)) { SelectedIds.Add(selectedId); } } else if (SelectedIds.Contains(selectedId)) { SelectedIds.Remove(selectedId); } StateHasChanged(); }
private void RemoveFromSelection([NotNull] EntityHierarchyElementViewModel element) { lock (LockObject) { SelectedIds.Remove(element.Id); // Remove the root entity from the selected root entities if (SelectedRootIds.Remove(element.Id) && element.IsLoaded) { // Ensure all children that are selected are properly added to the selected root collection foreach (var child in element.TransformChildren.SelectDeep(x => x.TransformChildren).Where(x => SelectedIds.Contains(x.Id))) { // Check if one of its parents is in the selection var parent = child.TransformParent; while (parent != element && parent != null) { if (SelectedIds.Contains(parent.Id)) { break; } parent = parent.TransformParent; } // If so, the SelectedRootIds collection does not need to be updated. if (parent != element) { return; } // Otherwise, it's a new root entity in the selection. SelectedRootIds.Add(child.Id); } } } }