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 });
            }
        }
예제 #5
0
 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);
 }