static void AddOrRemoveValidatedElement(FrameworkElement element, bool add) { ConfigButton button = element.FindParent<ConfigButton>(); if (button != null) { if (add) { button.validatedElements.Add(element); } else { button.validatedElements.Remove(element); } if (button.validatedElements.Count > 0) { var mb = new MultiBinding { Converter = HasErrorsToCanCommitConverter.Instance }; foreach (var validatedElement in button.validatedElements) { mb.Bindings.Add(new Binding { Source = validatedElement, Path = new PropertyPath(Validation.HasErrorProperty) }); } button.SetBinding(CanCommitProperty, mb); } else { button.CanCommit = true; } } }
static void BindCommitControlToValidatedProperty(FrameworkElement element) { ConfigButton button = element.FindParent<ConfigButton>(); if (button != null) { element.SetBinding(IsEnabledProperty, new Binding { Source = button, Path = new PropertyPath(CanCommitProperty) }); } }