static AttachedMembersRegistration()
 {
     DebbugerAttached         = Debugger.IsAttached;
     ExplicitParentTypes      = new HashSet <Type>();
     CommandParameterInternal = AttachedBindingMember.CreateAutoProperty <object, object>("~#@cmdparam");
     AttachedParentMember     = AttachedBindingMember.CreateAutoProperty <object, ParentValue>("#" + AttachedMemberConstants.Parent);
 }
Exemplo n.º 2
0
 static BindingExtensions()
 {
     EmptyListener        = new WeakEventListener();
     AttachedParentMember = AttachedBindingMember.CreateAutoProperty <object, object>("#" + AttachedMemberConstants.Parent);
     NullValue            = new object[] { null };
     MergePathDelegate    = MergePath;
 }
Exemplo n.º 3
0
 private void Raise(bool oldValue, bool newValue, INotifiableAttachedBindingMemberInfo <UICollectionViewCell, bool> member)
 {
     if (oldValue != newValue)
     {
         member.Raise(this, EventArgs.Empty);
     }
 }
Exemplo n.º 4
0
        public static void RegisterDrawerLayoutMembers()
        {
            MemberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembersCompat.View.DrawerIsOpened,
                                                                             ViewDrawerIsOpenedChanged, getDefaultValue: ViewDrawerIsOpenedGetDefaultValue));
            INotifiableAttachedBindingMemberInfo <DrawerLayout, bool> actionBarDrawerToggleEnabledMember =
                AttachedBindingMember.CreateAutoProperty(AttachedMembersCompat.DrawerLayout.ActionBarDrawerToggleEnabled,
                                                         (layout, args) =>
            {
                if (!args.NewValue)
                {
                    return;
                }
                Activity activity = layout.Context.GetActivity();
                if (activity != null)
                {
                    DrawerListenerImpl
                    .GetOrAdd(layout)
                    .SetListener(activity, new ActionBarDrawerToggle(activity, layout, Resource.String.Empty, Resource.String.Empty));
                }
            });

            MemberProvider.Register(actionBarDrawerToggleEnabledMember);
            MemberProvider.Register(typeof(DrawerLayout), "ActionBarDrawerEnabled", actionBarDrawerToggleEnabledMember, true);
            MemberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembersCompat.DrawerLayout.DrawerListener,
                                                                             (layout, args) =>
            {
                var listener = args.NewValue as DrawerLayout.IDrawerListener;
                if (listener == null)
                {
                    var func = args.NewValue as Func <DrawerLayout, DrawerLayout.IDrawerListener>;
                    if (func != null)
                    {
                        listener = func(layout);
                    }
                }
                if (listener == null)
                {
                    Tracer.Warn("The DrawerListener '{0}' is not supported", args.NewValue);
                }
                DrawerListenerImpl.GetOrAdd(layout).SetListener(layout.Context, listener);
            }));
        }
 static DataBindingModule()
 {
     DebbugerAttached = Debugger.IsAttached;
     ExplicitParentTypes = new HashSet<Type>();
     CommandParameterInternal = AttachedBindingMember.CreateAutoProperty<object, object>("~#@cmdparam");
     AttachedParentMember = AttachedBindingMember.CreateAutoProperty<object, ParentValue>("#" + AttachedMemberConstants.Parent);
 }
Exemplo n.º 6
0
        protected override bool LoadInternal()
        {
            PlatformExtensions.LayoutInflaterFactory = (context, dataContext, factory, inflater) =>
            {
                if (factory == null && !ServiceProvider.TryGet(out factory))
                {
                    factory = new ViewFactory();
                }
                if (inflater == null)
                {
                    return(new BindableLayoutInflaterCompat(factory, context));
                }
                return(new BindableLayoutInflaterCompat(factory, inflater, context));
            };

            IBindingMemberProvider memberProvider = BindingServiceProvider.MemberProvider;

            //View
            memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembersCompat.View.DrawerIsOpened,
                                                                             ViewDrawerIsOpenedChanged, getDefaultValue: ViewDrawerIsOpenedGetDefaultValue));

            //Toolbar
            memberProvider.Register(
                AttachedBindingMember.CreateAutoProperty(AttachedMembersCompat.Toolbar.MenuTemplate,
                                                         ToolbarMenuTemplateChanged));
            memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembersCompat.Toolbar.IsActionBar,
                                                                             ToolbarIsActionBarChanged));

            //DrawerLayout
            INotifiableAttachedBindingMemberInfo <DrawerLayout, bool> actionBarDrawerToggleEnabledMember =
                AttachedBindingMember.CreateAutoProperty(AttachedMembersCompat.DrawerLayout.ActionBarDrawerToggleEnabled,
                                                         (layout, args) =>
            {
                if (!args.NewValue)
                {
                    return;
                }
                Activity activity = layout.Context.GetActivity();
                if (activity != null)
                {
                    DrawerListenerImpl
                    .GetOrAdd(layout)
                    .SetListener(activity, new ActionBarDrawerToggle(activity, layout, Resource.String.Empty, Resource.String.Empty));
                }
            });

            memberProvider.Register(actionBarDrawerToggleEnabledMember);
            memberProvider.Register(typeof(DrawerLayout), "ActionBarDrawerEnabled", actionBarDrawerToggleEnabledMember, true);
            memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembersCompat.DrawerLayout.DrawerListener,
                                                                             (layout, args) =>
            {
                var listener = args.NewValue as DrawerLayout.IDrawerListener;
                if (listener == null)
                {
                    var func = args.NewValue as Func <DrawerLayout, DrawerLayout.IDrawerListener>;
                    if (func != null)
                    {
                        listener = func(layout);
                    }
                }
                if (listener == null)
                {
                    Tracer.Warn("The DrawerListener '{0}' is not supported", args.NewValue);
                }
                DrawerListenerImpl.GetOrAdd(layout).SetListener(layout.Context, listener);
            }));


            //ViewPager
            memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembersCompat.ViewPager.SelectedItem, ViewPagerSelectedItemChanged));
            memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembersCompat.ViewPager.GetPageTitleDelegate));
            memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembersCompat.ViewPager.RestoreSelectedIndex));
            var itemMember = AttachedBindingMember.CreateAutoProperty(AttachedMembersCompat.ViewPager.CurrentItem,
                                                                      ViewPagerCurrentItemChanged, AdapterViewCurrentItemAttached, (pager, info) => pager.CurrentItem);

            memberProvider.Register(itemMember);
            memberProvider.Register(typeof(ViewPager), "SelectedIndex", itemMember, true);
            memberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.ViewGroup.ItemsSource.Override <ViewPager>(),
                                                                             (pager, args) =>
            {
                var pagerAdapter = pager.Adapter as ItemsSourcePagerAdapter;
                if (pagerAdapter == null)
                {
                    pagerAdapter  = new ItemsSourcePagerAdapter(pager);
                    pager.Adapter = pagerAdapter;
                }
                pagerAdapter.ItemsSource = args.NewValue;
            }));
            return(true);
        }