Beispiel #1
0
        protected virtual void RaiseErrorsChanged(DataErrorsChangedEventArgs args)
        {
            OnPropertyChanged(Empty.HasErrorsChangedArgs);
            OnPropertyChanged(Empty.IsValidChangedArgs);
            OnPropertyChanged(Empty.IndexerPropertyChangedArgs);
            if (ErrorsChanged != null)
            {
                ThreadManager.Invoke(Settings.EventExecutionMode, this, args, RaiseErrorsChangedDelegate);
            }
#if NONOTIFYDATAERROR
            string ignoreProperty = args.PropertyName ?? string.Empty;
            lock (_locker)
            {
                //Disable validation to prevent cycle
                var contains = IgnoreProperties.Contains(ignoreProperty);
                if (!contains)
                {
                    IgnoreProperties.Add(ignoreProperty);
                }
                try
                {
                    OnPropertyChanged(ignoreProperty);
                }
                finally
                {
                    if (!contains)
                    {
                        IgnoreProperties.Remove(ignoreProperty);
                    }
                }
            }
#endif
        }
        private void HandleValidationInternal(object sender, object message)
        {
            var validationMessage = message as AsyncValidationMessage;

            if (validationMessage != null)
            {
                RaiseErrorsChanged(new DataErrorsChangedEventArgs(validationMessage.PropertyName));
                OnHandleAsyncValidationMessage(sender, validationMessage);
                return;
            }
            var errorsMessage = message as DataErrorsChangedMessage;

            if (errorsMessage == null)
            {
                return;
            }
            OnErrorsChanged(sender, errorsMessage);
#if NONOTIFYDATAERROR
            //To update property error in UI.
            ThreadManager.InvokeOnUiThreadAsync(() =>
            {
                string ignoreProperty = errorsMessage.PropertyName ?? string.Empty;
                lock (_locker)
                {
                    //Disable validation to prevent cycle
                    var contains = IgnoreProperties.Contains(ignoreProperty);
                    if (!contains)
                    {
                        IgnoreProperties.Add(ignoreProperty);
                    }
                    try
                    {
                        OnPropertyChanged(errorsMessage.PropertyName, ExecutionMode.None);
                    }
                    finally
                    {
                        if (!contains)
                        {
                            IgnoreProperties.Remove(ignoreProperty);
                        }
                    }
                }
            });
#endif
        }
Beispiel #3
0
 protected void RemoveIgnoreProperty <TModel>(Func <Expression <Func <TModel, object> > > getProperty)
 {
     IgnoreProperties.Remove(getProperty.GetMemberName());
 }
Beispiel #4
0
 /// <summary>
 ///     Removes a property name to the <see cref="ValidatableViewModel.IgnoreProperties" />.
 /// </summary>
 protected void RemoveIgnoreProperty <TValue>(Expression <Func <T, TValue> > getProperty)
 {
     IgnoreProperties.Remove(getProperty.GetMemberInfo().Name);
 }