void IObserver <object> .OnNext(object value) { void Signal() { var notification = value as BindingNotification; if (notification != null) { if (notification.HasValue || notification.ErrorType == BindingErrorType.Error) { Value = notification.Value; _owner.Changed(this); } if (notification.ErrorType != BindingErrorType.None) { _owner.Error(this, notification); } } else { Value = value; _owner.Changed(this); } } if (Dispatcher.UIThread.CheckAccess()) { Signal(); } else { Dispatcher.UIThread.Post(Signal); } }
private void ValueChanged(object value) { _owner.Owner.Owner?.VerifyAccess(); var notification = value as BindingNotification; if (notification != null) { if (notification.HasValue) { Value = notification.Value; _owner.Changed(this); } if (notification.ErrorType != BindingErrorType.None) { _owner.Error(this, notification); } } else { Value = value; _owner.Changed(this); } }
private void ValueChanged(object value) { var bindingError = value as BindingError; if (bindingError != null) { _owner.Error(this, bindingError); } var validationStatus = value as IValidationStatus; if (validationStatus != null) { _owner.Validation(this, validationStatus); } else if (bindingError == null || bindingError.UseFallbackValue) { Value = bindingError == null ? value : bindingError.FallbackValue; _owner.Changed(this); } }