static void RuleChanged(ValidationStatusControl status, BrokenRuleEventArgs args, bool isValid) { if (!isValid) { status.fieldErrors.Add(args.BrokenRule); } else { status.fieldErrors.Remove(args.BrokenRule); } var strs = from brokenRule in status.fieldErrors select brokenRule.Message; status.ErrorMessage = string.Join(Environment.NewLine, strs.ToArray()); }
private static void EntityChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e) { ValidationStatusControl status = d as ValidationStatusControl; Debug.Assert(status != null); EventHandler <BrokenRuleEventArgs> ruleRep = delegate(object sender, BrokenRuleEventArgs args) { RuleChanged(status, args, true); }; EventHandler <BrokenRuleEventArgs> ruleBreak = delegate(object sender, BrokenRuleEventArgs args) { RuleChanged(status, args, false); }; if (e.OldValue != null) { var c = ((EntityBase)e.OldValue).Extensions.BrokenRules; c.RuleRepaired -= ruleRep; c.RuleBroken -= ruleBreak; foreach (var brokenRule in c) { RuleChanged(status, new BrokenRuleEventArgs(brokenRule), true); } } if (e.NewValue == null) { return; } { var c = ((EntityBase)e.NewValue).Extensions.BrokenRules; c.RuleRepaired += ruleRep; c.RuleBroken += ruleBreak; foreach (var brokenRule in c) { RuleChanged(status, new BrokenRuleEventArgs(brokenRule), false); } } }