Example #1
0
        public static void RevalidateItems(IEnumerable <IViewModel> items, ValidationScope scope)
        {
            if (scope != ValidationScope.Self)
            {
                foreach (var item in items)
                {
                    foreach (var property in item.Descriptor.Properties)
                    {
                        PerformDescendantValidations(item, property, scope);
                    }
                }
            }

            var controller = new ValidationController();

            foreach (var item in items)
            {
                foreach (var property in item.Descriptor.Properties)
                {
                    controller.RequestPropertyRevalidation(item, property);
                }
            }

            foreach (var item in items)
            {
                controller.RequestViewModelRevalidation(item);
            }

            controller.ProcessPendingValidations();
        }
Example #2
0
        public static void RevalidateViewModelValidations(IViewModel viewModel)
        {
            var controller = new ValidationController();

            controller.RequestViewModelRevalidation(viewModel);
            controller.ProcessPendingValidations();
        }
        private void ValidateAndSetValueWithNewController(IBehaviorContext context)
        {
            var controller = new ValidationController();

            TValue newValue = _invalidValueCache.Get(context);

            controller.ManuallyBeginValidation(context.VM, _property);
            ValidateAndSetValueWithExistingController(context, controller, newValue);
            controller.ManuallyEndValidation(context.VM, _property);

            controller.ProcessPendingValidations();
        }
Example #4
0
        public static void RevalidatePropertyValidations(
            IViewModel viewModel,
            IVMPropertyDescriptor property,
            ValidationScope scope
            )
        {
            PerformDescendantValidations(viewModel, property, scope);

            var controller = new ValidationController();

            controller.RequestPropertyRevalidation(viewModel, property);
            controller.ProcessPendingValidations();
        }
Example #5
0
            public void PerformRevalidation(ValidationController controller)
            {
                IBehaviorContext context = VM.Kernel.GetContext();

                bool targetsProperty = Property != null;

                if (targetsProperty)
                {
                    Property.Behaviors.BeginValidationNext(context, controller);
                    Property.Behaviors.PropertyRevalidateNext(context);
                    Property.Behaviors.EndValidationNext(context);
                }

                bool targetsViewModel = Property == null;

                if (targetsViewModel)
                {
                    VM.Descriptor.Behaviors.ViewModelRevalidateNext(context, controller);
                }
            }
        public void Revalidate(IBehaviorContext context)
        {
            ValidationController controller = _validationController.Get(context);
            var validationResult            = controller.GetResult(_step, context.VM, _property);

            bool valueWasInvalid          = _invalidValueCache.HasValue(context);
            bool valueIsNotInvalidAnymore = validationResult.IsValid;

            if (valueWasInvalid && valueIsNotInvalidAnymore)
            {
                TValue previouslyInvalidValue = _invalidValueCache.Get(context);

                _invalidValueCache.Clear(context);
                SetValueNext(context, previouslyInvalidValue);
            }
            else
            {
                this.PropertyRevalidateNext(context);
            }

            _resultManager.UpdateValidationResult(context, validationResult);
        }
 public void BeginValidation(IBehaviorContext context, ValidationController controller)
 {
     _validationController.Set(context, controller);
     this.BeginValidationNext(context, controller);
 }
        private void ValidateAndSetValueWithExistingController(IBehaviorContext context, ValidationController controller, TValue newValue)
        {
            ValidationResult validationResult = controller.GetResult(_step, context.VM, _property);

            if (validationResult.IsValid)
            {
                _invalidValueCache.Clear(context);
                SetValueNext(context, newValue);
            }

            _resultManager.UpdateValidationResult(context, validationResult);
        }