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) });
            }
        }