public static void Initialize(IBindingProvider bindingProvider = null, IBindingManager bindingManager = null, IBindingResourceResolver resourceResolver = null, IBindingMemberProvider memberProvider = null, IVisualTreeManager visualTreeManager = null, IWeakEventManager weakEventManager = null, IObserverProvider observerProvider = null, IBindingContextManager contextManager = null, IBindingErrorProvider errorProvider = null, Func <IBindingMemberInfo, Type, object, object> converter = null, Func <string, IBindingPath> bindingPathFactory = null, Func <Type, string, IBindingMemberInfo> findUpdateEvent = null, Func <CultureInfo> bindingCultureInfo = null, IDictionary <string, IBindingBehavior> bindingModeBehaviors = null) { ValueConverter = converter ?? ((info, type, arg3) => arg3); BindingProvider = bindingProvider ?? new BindingProvider(); BindingManager = bindingManager ?? new BindingManager(); ResourceResolver = resourceResolver ?? new BindingResourceResolver(); MemberProvider = memberProvider ?? new BindingMemberProvider(); VisualTreeManager = visualTreeManager ?? new VisualTreeManager(); WeakEventManager = weakEventManager ?? new WeakEventManager(); ObserverProvider = observerProvider ?? new ObserverProvider(); ContextManager = contextManager ?? new BindingContextManager(); BindingPathFactory = bindingPathFactory ?? BindingPathFactoryDefaultImpl; UpdateEventFinder = findUpdateEvent ?? FindUpdateEventDefaultImpl; BindingCultureInfo = bindingCultureInfo ?? BindingCultureInfoDefaultImpl; ErrorProvider = errorProvider; if (bindingModeBehaviors == null) { InitializeDefaultBindingModeBehaviors(); } else { foreach (var behavior in bindingModeBehaviors) { BindingModeToBehavior[behavior.Key] = behavior.Value; } } }
private static void OnBindingUpdated(IDataBinding sender, BindingEventArgs args) { IBindingErrorProvider errorProvider = BindingServiceProvider.ErrorProvider; if (errorProvider != null) { SetErrors(errorProvider, sender, Empty.Array <object>()); } }
private static void SetErrors(IBindingErrorProvider errorProvider, IDataBinding sender, object[] errors) { IBindingPathMembers pathMembers = sender.TargetAccessor.Source.GetPathMembers(false); object target = pathMembers.PenultimateValue; if (target != null && !target.IsUnsetValue()) { errorProvider.SetErrors(target, Key + pathMembers.Path.Path, errors, sender.Context); } }
private static void OnBindingException(IDataBinding sender, BindingExceptionEventArgs args) { IBindingErrorProvider errorProvider = BindingServiceProvider.ErrorProvider; if (errorProvider != null) { SetErrors(errorProvider, sender, new object[] { ShowOriginalException?args.OriginalException.Message: args.Exception.Message }); } }
private static void OnBindingUpdated(IDataBinding sender, BindingEventArgs args) { if (args.Exception == null) { IBindingErrorProvider errorProvider = BindingServiceProvider.ErrorProvider; if (errorProvider != null) { SetErrors(errorProvider, sender, Empty.Array <object>(), null); } } else { IBindingErrorProvider errorProvider = BindingServiceProvider.ErrorProvider; if (errorProvider != null) { SetErrors(errorProvider, sender, new object[] { ShowOriginalException?args.OriginalException.Message: args.Exception.Message }, null); } } }
private static void SetErrors(IBindingErrorProvider errorProvider, IDataBinding sender, object[] errors, IDataContext context) { IBindingPathMembers pathMembers = sender.TargetAccessor.Source.GetPathMembers(false); object target = pathMembers.PenultimateValue; if (target != null && !target.IsUnsetValue()) errorProvider.SetErrors(target, Key + pathMembers.Path.Path, errors, context ?? sender.Context); }