private static void OnIsCheckedPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { if ((d is TagFamily) && (((bool?)e.NewValue).HasValue)) { foreach (Tag tag in (d as TagFamily).Members) { //tag.IsTagChecked = true; ItemHelper.SetIsChecked(tag, (bool?)e.NewValue); } } if (d is Tag) { ItemHelper.CheckParent((d as Tag)); } }
public static void CheckParent(Tag d) { int check = ((d as Tag).GetValue(ItemHelper.ParentProperty) as TagFamily).Members.Where(x => ItemHelper.GetIsChecked(x) == true).Count(); int uncheck = ((d as Tag).GetValue(ItemHelper.ParentProperty) as TagFamily).Members.Where(x => ItemHelper.GetIsChecked(x) == false).Count(); if (check > 0 && uncheck > 0) { ItemHelper.SetIsChecked((d as Tag).GetValue(ItemHelper.ParentProperty) as DependencyObject, null); return; } if (check > 0) { ItemHelper.SetIsChecked((d as Tag).GetValue(ItemHelper.ParentProperty) as DependencyObject, true); return; } ItemHelper.SetIsChecked((d as Tag).GetValue(ItemHelper.ParentProperty) as DependencyObject, false); }