Catel.MVVM.ViewModelBase.OnValidating C# (CSharp) Method

OnValidating() protected method

Called when the object is validating.
protected OnValidating ( IValidationContext validationContext ) : void
validationContext IValidationContext The validation context.
return void
        protected override void OnValidating(IValidationContext validationContext)
        {
            base.OnValidating(validationContext);

            lock (_modelLock)
            {
                foreach (KeyValuePair<string, object> model in _modelObjects)
                {
                    if (model.Value == null)
                    {
                        continue;
                    }

                    var modelValueAsModelBaseBase = model.Value as IModelValidation;
                    if (modelValueAsModelBaseBase != null)
                    {
                        modelValueAsModelBaseBase.Validate();
                    }
                }
            }

            lock (ChildViewModels)
            {
                var previousValue = _childViewModelsHaveErrors;

                _childViewModelsHaveErrors = false;

                var childViewModels = ChildViewModels.ToArray();
                foreach (var childViewModel in childViewModels)
                {
                    childViewModel.ValidateViewModel();
                    if (((INotifyDataErrorInfo)childViewModel).HasErrors)
                    {
                        _childViewModelsHaveErrors = true;
                        RaisePropertyChanged(() => HasErrors);
                    }
                }

                if (!_childViewModelsHaveErrors && (_childViewModelsHaveErrors != previousValue))
                {
                    RaisePropertyChanged(() => HasErrors);
                }
            }
        }