/// <summary> /// Добавляет автоматическое отслеживание валидности дочернего виджета. /// </summary> /// <param name="name">Имя свойства ViewModel для которого следует добавлять ошибки валидации.</param> /// <param name="target">Cвойство ViewModel для которого следует добавлять ошибки валидации.</param> /// <exception cref="System.ArgumentException"> /// name /// or /// target /// </exception> public void AddValidationTarget(string name, RsValidationBase target) { if (string.IsNullOrEmpty(name)) { throw new ArgumentException("name"); } if (target == null) { throw new ArgumentException("target"); } if (!validationTargets.ContainsKey(name)) { validationTargets.Add(name, target); target.ErrorsChanged += ChildErrorsChanged; } }
private bool SplitAndFindChildValidation(string propertyName, out RsValidationBase validation, out string propertyTail) { // делим на части имя свойства, если оно составное ишем по первой части дочерний объект валидации // и отдаем оставшуюся часть пути на обработку ниже var nodes = DottedPathSplitter.Split(propertyName); propertyTail = nodes.Tail; validation = null; if (!string.IsNullOrEmpty(nodes.Tail) && !string.IsNullOrEmpty(nodes.Head)) { if (validationTargets.ContainsKey(nodes.Head)) { validation = validationTargets[nodes.Head]; return(true); } } return(false); }