private static bool MenuItemUpdateActionView(IBindingMemberInfo bindingMemberInfo, IMenuItem menuItem, object content)
        {
            var actionView = menuItem.GetActionView();

            if (actionView != null)
            {
                ParentObserver.GetOrAdd(actionView).Parent = null;
            }

            var selector = MenuItemActionViewSelectorMember.GetValue(menuItem, null);

            if (selector != null)
            {
                object template = selector.SelectTemplate(content, menuItem);
                if (template != null)
                {
                    content = template;
                }
            }
            if (content == null)
            {
                menuItem.SetActionView(null);
                return(true);
            }

            int viewId;

            if (int.TryParse(content.ToString(), out viewId))
            {
                menuItem.SetActionView(viewId);
                actionView = menuItem.GetActionView();
            }
            else
            {
                actionView = content as View;
                if (actionView == null)
                {
                    Type viewType = TypeCache <View> .Instance.GetTypeByName(content.ToString(), false, true);

                    actionView = viewType.CreateView(GetContextFromMenuItem(menuItem));
                }
                menuItem.SetActionView(actionView);
            }
            ParentObserver.GetOrAdd(actionView).Parent = menuItem;
            var bindings = MenuItemTemplate.GetActionViewBind(menuItem);

            if (!string.IsNullOrEmpty(bindings))
            {
                BindingServiceProvider.BindingProvider.CreateBindingsFromString(actionView, bindings, null);
            }
            return(true);
        }
        private static bool MenuItemUpdateActionView(IBindingMemberInfo bindingMemberInfo, IMenuItem menuItem, object content)
        {
            var actionView = menuItem.GetActionView();

            if (actionView != null)
            {
                ParentObserver.Set(actionView, null);
            }

            object template = menuItem.GetBindingMemberValue(AttachedMembers.MenuItem.ActionViewTemplateSelector)?.SelectTemplate(content, menuItem);

            if (template != null)
            {
                content = template;
            }
            if (content == null)
            {
#if APPCOMPAT
                MenuItemCompat.SetActionView(menuItem, null);
#else
                menuItem.SetActionView(null);
#endif
                return(true);
            }

            LayoutInflaterResult result = null;
            int viewId;
            if (int.TryParse(content.ToString(), out viewId))
            {
                result  = GetContextFromItem(menuItem).GetBindableLayoutInflater().InflateEx(viewId, null, false);
                content = result.View;
            }

            actionView = content as View;
            if (actionView == null)
            {
                Type viewType = TypeCache <View> .Instance.GetTypeByName(content.ToString(), true, true);

                actionView = viewType.CreateView(GetContextFromItem(menuItem));
            }
#if APPCOMPAT
            MenuItemCompat.SetActionView(menuItem, actionView);
#else
            menuItem.SetActionView(actionView);
#endif

            ParentObserver.Set(actionView, menuItem);
            var bindings = GetActionViewBind(menuItem);
            if (!string.IsNullOrEmpty(bindings))
            {
                BindingServiceProvider.BindingProvider.CreateBindingsFromString(actionView, bindings, null);
            }
            result?.ApplyBindings();
            return(true);
        }
        private static bool MenuItemUpdateActionView(IBindingMemberInfo bindingMemberInfo, IMenuItem menuItem, object content)
        {
            var actionView = menuItem.GetActionView();

            if (actionView != null)
            {
                ParentObserver.GetOrAdd(actionView).Parent = null;
            }

            object template = menuItem.GetBindingMemberValue(AttachedMembers.MenuItem.ActionViewTemplateSelector)?.SelectTemplate(content, menuItem);

            if (template != null)
            {
                content = template;
            }
            if (content == null)
            {
                menuItem.SetActionView(null);
                return(true);
            }

            int viewId;

            if (int.TryParse(content.ToString(), out viewId))
            {
                content = GetContextFromItem(menuItem).GetBindableLayoutInflater().Inflate(viewId, null);
            }

            actionView = content as View;
            if (actionView == null)
            {
                Type viewType = TypeCache <View> .Instance.GetTypeByName(content.ToString(), true, true);

                actionView = viewType.CreateView(GetContextFromItem(menuItem));
            }
            menuItem.SetActionView(actionView);

            ParentObserver.GetOrAdd(actionView).Parent = menuItem;
            var bindings = GetActionViewBind(menuItem);

            if (!string.IsNullOrEmpty(bindings))
            {
                BindingServiceProvider.BindingProvider.CreateBindingsFromString(actionView, bindings, null);
            }
            return(true);
        }