Ceci est basé sur la source de quelqu'un d'autre que je ne me souviens pas, mais nous l'utilisons pour aider à trouver des enfants visuels d'un type. Ce n'est peut-être pas l'utilisation la plus efficace pour ce scénario, mais cela pourrait vous aider à vous mettre sur la bonne voie.
public static childItem FindVisualChild<childItem>(DependencyObject obj) where childItem : DependencyObject
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(obj, i);
if (child != null && child is childItem)
return (childItem)child;
childItem childOfChild = FindVisualChild<childItem>(child);
if (childOfChild != null)
return childOfChild;
}
return null;
}
[Modifier 16.04.09] Sur cette base, essayer cette méthode. Doit trouver toutes les cases à cocher et modifier l'état tel qu'il est fourni, appelable à partir de votre gestionnaire d'événements sur les événements Checked/Unchecked.
public static void CheckAllBoxes(DependencyObject obj, bool isChecked)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
// If a checkbox, change IsChecked and continue.
if (obj is CheckBox)
{
((CheckBox) obj).IsChecked = isChecked;
continue;
}
DependencyObject child = VisualTreeHelper.GetChild(obj, i);
CheckAllBoxes(child, isChecked);
}
}
Si vous n'utilisez pas l'objet expéditeur ou routedeventargs dans HeadCheck vous ne devriez pas les transmettre – UrbanEsc
Le 'UpdateSourceTrigger = PropertyChanged' m'aide. Merci. – AechoLiu