예제 #1
0
        /// <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;
            }
        }
예제 #2
0
        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);
        }