static void ToggleCheckedStateIfItemSelected(Selector selector, CheckBox target) { var selectedItems = selector.GetSelectedItems(); var targetIsChildOfSelectedItem = false; foreach (var item in selectedItems) { var listItem = selector.ItemContainerGenerator.ContainerFromItem(item); if (listItem == null) { continue; } if (target.IsVisualChildOf(listItem)) { targetIsChildOfSelectedItem = true; break; } } if (!targetIsChildOfSelectedItem) return; target.IsChecked = !target.IsChecked; }