private static IItemsSourceGenerator GetOrAddTabBarItemsSourceGenerator(UITabBarController controller)
        {
            var generator = controller.GetBindingMemberValue(AttachedMembers.UITabBarController.ItemsSourceGenerator);

            if (generator == null)
            {
                generator = new ArrayItemsSourceGenerator <UITabBarController, UIViewController>(controller,
                                                                                                 AttachedMemberConstants.ItemTemplate, (tabBarController, controllers) =>
                {
                    tabBarController.SetViewControllers(controllers, true);
                    var viewController = tabBarController.SelectedViewController;
                    if (viewController != null)
                    {
                        if ((controllers.Length == 0) || !controllers.Contains(viewController))
                        {
                            viewController.RemoveFromParentViewController();
                            viewController.View?.RemoveFromSuperviewEx();
                            if (controllers.Length == 0)
                            {
                                tabBarController.SetBindingMemberValue(
                                    AttachedMembers.UITabBarController.SelectedItem, BindingExtensions.NullValue);
                            }
                            else
                            {
                                tabBarController.SelectedViewController = controllers.Last();
                            }
                        }
                    }
                });
                controller.SetBindingMemberValue(AttachedMembers.UITabBarController.ItemsSourceGenerator, generator);
            }
            return(generator);
        }
        private static IItemsSourceGenerator GetOrAddToolBarItemsSourceGenerator(UIToolbar toolbar)
        {
            var generator = toolbar.GetBindingMemberValue(AttachedMembers.UIView.ItemsSourceGenerator);

            if (generator == null)
            {
                generator = new ArrayItemsSourceGenerator <UIToolbar, UIBarButtonItem>(toolbar,
                                                                                       AttachedMemberConstants.ItemTemplate,
                                                                                       (tabBarController, items) => tabBarController.SetItemsEx(items, true));
                toolbar.SetBindingMemberValue(AttachedMembers.UIView.ItemsSourceGenerator, generator);
            }
            return(generator);
        }
        private static IItemsSourceGenerator GetOrAddToolBarItemsSourceGenerator(UIViewController controller)
        {
            var generator = controller.GetBindingMemberValue(AttachedMembers.UIViewController.ToolbarItemsSourceGenerator);

            if (generator == null)
            {
                generator = new ArrayItemsSourceGenerator <UIViewController, UIBarButtonItem>(controller,
                                                                                              AttachedMembers.UIViewController.ToolbarItemTemplateSelector,
                                                                                              (tabBarController, items) => tabBarController.SetToolbarItemsEx(items, true));
                controller.SetBindingMemberValue(AttachedMembers.UIViewController.ToolbarItemsSourceGenerator, generator);
            }
            return(generator);
        }
 private static IItemsSourceGenerator GetOrAddToolBarItemsSourceGenerator(UIToolbar toolbar)
 {
     var generator = toolbar.GetBindingMemberValue(AttachedMembers.UIView.ItemsSourceGenerator);
     if (generator == null)
     {
         generator = new ArrayItemsSourceGenerator<UIToolbar, UIBarButtonItem>(toolbar,
            AttachedMemberConstants.ItemTemplate,
            (tabBarController, items) => tabBarController.SetItemsEx(items, true));
         toolbar.SetBindingMemberValue(AttachedMembers.UIView.ItemsSourceGenerator, generator);
     }
     return generator;
 }
 private static IItemsSourceGenerator GetOrAddToolBarItemsSourceGenerator(UIViewController controller)
 {
     var generator = controller.GetBindingMemberValue(AttachedMembers.UIViewController.ToolbarItemsSourceGenerator);
     if (generator == null)
     {
         generator = new ArrayItemsSourceGenerator<UIViewController, UIBarButtonItem>(controller,
             AttachedMembers.UIViewController.ToolbarItemTemplateSelector,
             (tabBarController, items) => tabBarController.SetToolbarItemsEx(items, true));
         controller.SetBindingMemberValue(AttachedMembers.UIViewController.ToolbarItemsSourceGenerator, generator);
     }
     return generator;
 }
 private static IItemsSourceGenerator GetOrAddTabBarItemsSourceGenerator(UITabBarController controller)
 {
     var generator = controller.GetBindingMemberValue(AttachedMembers.UITabBarController.ItemsSourceGenerator);
     if (generator == null)
     {
         generator = new ArrayItemsSourceGenerator<UITabBarController, UIViewController>(controller,
             AttachedMemberConstants.ItemTemplate, (tabBarController, controllers) =>
             {
                 tabBarController.SetViewControllers(controllers, true);
                 var viewController = tabBarController.SelectedViewController;
                 if (viewController != null)
                 {
                     if (controllers.Length == 0 || !controllers.Contains(viewController))
                     {
                         viewController.RemoveFromParentViewController();
                         if (viewController.View != null)
                             viewController.View.RemoveFromSuperviewEx();
                         if (controllers.Length == 0)
                             tabBarController.SetBindingMemberValue(
                                 AttachedMembers.UITabBarController.SelectedItem, BindingExtensions.NullValue);
                         else
                             tabBarController.SelectedViewController = controllers.Last();
                     }
                 }
             });
         controller.SetBindingMemberValue(AttachedMembers.UITabBarController.ItemsSourceGenerator, generator);
     }
     return generator;
 }