public static void ShowAtEx([NotNull] this FlyoutBase flyoutBase, [NotNull] FrameworkElement placementTarget) { Should.NotBeNull(flyoutBase, nameof(flyoutBase)); Should.NotBeNull(placementTarget, nameof(placementTarget)); var flyout = flyoutBase as Flyout; if (flyout == null) { var items = (flyoutBase as MenuFlyout)?.Items; if (items != null) { foreach (MenuFlyoutItemBase item in items) { ParentObserver.Set(item, placementTarget); } } } else { var content = flyout.Content as FrameworkElement; if (content != null) { ParentObserver.Set(content, placementTarget); } } flyoutBase.ShowAt(placementTarget); }
public override UICollectionViewCell GetCell(UICollectionView collectionView, NSIndexPath indexPath) { var selector = _itemTemplateProvider.TemplateSelector; if (selector == null) { throw new NotSupportedException("The ItemTemplate is null to create UICollectionViewCell use the ItemTemplate with ICollectionCellTemplateSelector value."); } object item = GetItemAt(indexPath); UICollectionViewCell cell; var cellTemplateSelectorSupportDequeueReusableCell = selector as ICollectionCellTemplateSelectorSupportDequeueReusableCell; if (cellTemplateSelectorSupportDequeueReusableCell == null) { cell = (UICollectionViewCell)collectionView.DequeueReusableCell(selector.GetIdentifier(item, collectionView), indexPath); } else { cell = cellTemplateSelectorSupportDequeueReusableCell.DequeueReusableCell(collectionView, item, indexPath); } cell.SetDataContext(item); if (!HasMask(cell, InitializedStateMask)) { cell.Tag |= InitializedStateMask; ParentObserver.Set(cell, collectionView); selector.InitializeTemplate(collectionView, cell); InitializeCell(cell); } CellMediator.Attach(collectionView, cell, indexPath); return(cell); }
public static void SetInputViewEx([NotNull] this UITextField textField, UIView view) { Should.NotBeNull(textField, nameof(textField)); textField.InputView = view; if (view != null) { ParentObserver.Set(view, textField); } }
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); }
public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath) { object item = GetItemAt(indexPath); var selector = _templateProvider.TemplateSelector; if (selector == null) { throw new NotSupportedException("The ItemTemplate is null to create UITableViewCell use the ItemTemplate with ITableCellTemplateSelector value."); } var cellTemplateSelectorSupportDequeueReusableCell = selector as ITableCellTemplateSelectorSupportDequeueReusableCell; var cell = cellTemplateSelectorSupportDequeueReusableCell == null ? tableView.DequeueReusableCell(selector.GetIdentifier(item, tableView), indexPath) : cellTemplateSelectorSupportDequeueReusableCell.DequeueReusableCell(tableView, item, indexPath); cell.SetDataContext(item); if (!HasMask(cell, InitializedStateMask)) { cell.Tag |= InitializedStateMask; ParentObserver.Set(cell, tableView); selector.InitializeTemplate(tableView, cell); InitializeCell(cell); } return(cell); }
public static void RegisterViewMembers() { MemberProvider.Register(AttachedBindingMember.CreateMember <UIView, object>(AttachedMemberConstants.Parent, (info, view) => ParentObserver.Get(view), (info, view, arg3) => ParentObserver.Set(view, arg3), (info, view, arg3) => ParentObserver.AddListener(view, arg3))); MemberProvider.Register(AttachedBindingMember.CreateMember <UIView, object>(AttachedMemberConstants.FindByNameMethod, FindViewByName)); MemberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.UIView.Content, ContentChanged)); var member = AttachedBindingMember.CreateAutoProperty(AttachedMembers.UIView.ContentTemplateSelector, ContentTemplateChanged); MemberProvider.Register(member); MemberProvider.Register(typeof(UIView), AttachedMemberConstants.ContentTemplate, member, true); MemberProvider.Register(AttachedBindingMember.CreateMember(AttachedMembers.UIView.Visible, (info, view) => !view.Hidden, (info, view, arg3) => view.Hidden = !arg3)); }
private static void SetParentValue(IBindingMemberInfo bindingMemberInfo, Element element, object arg3) { ParentObserver.Set(element, arg3); }
private static void SetParentValue(IBindingMemberInfo bindingMemberInfo, FrameworkElement frameworkElement, object arg3) { ParentObserver.Set(frameworkElement, arg3); }
public static void RegisterActionBarTabMembers() { MemberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.ActionBarTab.Content.Override <ActionBar.Tab>())); MemberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.ActionBarTab.ContentTemplateSelector.Override <ActionBar.Tab>())); MemberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.ActionBarTab.ContentTemplate.Override <ActionBar.Tab>())); MemberProvider.Register(AttachedBindingMember .CreateNotifiableMember <ActionBar.Tab, string>(nameof(ActionBar.Tab.ContentDescription), (info, tab) => tab.ContentDescription, (info, tab, value) => { tab.SetContentDescription(value); return(true); })); MemberProvider.Register(AttachedBindingMember .CreateNotifiableMember(AttachedMembers.ActionBarTab.CustomView.Override <ActionBar.Tab>(), (info, tab) => tab.CustomView, (info, tab, value) => { LayoutInflaterResult result = null; if (tab.CustomView != null) { ParentObserver.Set(tab.CustomView, null); } if (value is int) { result = GetContextFromItem(tab).GetBindableLayoutInflater().InflateEx((int)value, null, false); value = result.View; } tab.SetCustomView((View)value); if (tab.CustomView != null) { ParentObserver.Set(tab.CustomView, tab); } result?.ApplyBindings(); return(true); })); MemberProvider.Register(AttachedBindingMember .CreateNotifiableMember(AttachedMembers.ActionBarTab.Icon.Override <ActionBar.Tab>(), (info, tab) => tab.Icon, (info, tab, value) => { if (value is int) { tab.SetIcon((int)value); } else { tab.SetIcon((Drawable)value); } return(true); })); MemberProvider.Register(AttachedBindingMember .CreateNotifiableMember <ActionBar.Tab, string>(nameof(ActionBar.Tab.Text), (info, tab) => tab.Text, (info, tab, value) => { tab.SetText(value); return(true); })); MemberProvider.Register(AttachedBindingMember .CreateNotifiableMember <ActionBar.Tab, Object>(nameof(ActionBar.Tab.Tag), (info, tab) => tab.Tag, (info, tab, value) => { tab.SetTag(value); return(true); })); }
public static void RegisterActionBarMembers() { MemberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.ActionBar.ItemsSource.Override <ActionBar>(), (bar, args) => ActionBarUpdateItemsSource(bar))); MemberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.ActionBar.SelectedItem.Override <ActionBar>(), ActionBarSelectedItemChanged)); MemberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.ActionBar.ContextActionBarVisible.Override <ActionBar>(), ActionBarContextActionBarVisibleChanged)); MemberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.ActionBar.ContextActionBarTemplate.Override <ActionBar>())); MemberProvider.Register(AttachedBindingMember .CreateAutoProperty(AttachedMembers.ActionBar.BackgroundDrawable.Override <ActionBar>(), (actionBar, args) => { if (args.NewValue is int) { actionBar.SetBackgroundDrawable( actionBar.ThemedContext.Resources.GetDrawable((int)args.NewValue)); } else { actionBar.SetBackgroundDrawable((Drawable)args.NewValue); } })); MemberProvider.Register(AttachedBindingMember .CreateNotifiableMember(AttachedMembers.ActionBar.CustomView.Override <ActionBar>(), (info, actionBar) => actionBar.CustomView, (info, actionBar, value) => { LayoutInflaterResult result = null; if (actionBar.CustomView != null) { ParentObserver.Set(actionBar.CustomView, null); } if (value is int) { result = actionBar.ThemedContext.GetBindableLayoutInflater().InflateEx((int)value, null, false); value = result.View; } actionBar.CustomView = (View)value; if (actionBar.CustomView != null) { ParentObserver.Set(actionBar.CustomView, actionBar); } result?.ApplyBindings(); return(true); })); MemberProvider.Register(AttachedBindingMember .CreateAutoProperty(AttachedMembers.ActionBar.DisplayHomeAsUpEnabled.Override <ActionBar>(), (actionBar, args) => actionBar.SetDisplayHomeAsUpEnabled(args.NewValue))); MemberProvider.Register(AttachedBindingMember .CreateNotifiableMember(AttachedMembers.ActionBar.DisplayOptions.Override <ActionBar>().Cast <ActionBarDisplayOptions>(), (info, actionBar) => actionBar.GetActionBarDisplayOptions(), (info, actionBar, value) => { actionBar.SetActionBarDisplayOptions(value); return(true); })); MemberProvider.Register(AttachedBindingMember .CreateAutoProperty(AttachedMembers.ActionBar.DisplayShowCustomEnabled.Override <ActionBar>(), (actionBar, args) => actionBar.SetDisplayShowCustomEnabled(args.NewValue))); MemberProvider.Register(AttachedBindingMember .CreateAutoProperty(AttachedMembers.ActionBar.DisplayShowHomeEnabled.Override <ActionBar>(), (actionBar, args) => actionBar.SetDisplayShowHomeEnabled(args.NewValue))); MemberProvider.Register(AttachedBindingMember .CreateAutoProperty(AttachedMembers.ActionBar.DisplayShowTitleEnabled.Override <ActionBar>(), (actionBar, args) => actionBar.SetDisplayShowTitleEnabled(args.NewValue))); MemberProvider.Register(AttachedBindingMember .CreateAutoProperty(AttachedMembers.ActionBar.DisplayUseLogoEnabled.Override <ActionBar>(), (actionBar, args) => actionBar.SetDisplayUseLogoEnabled(args.NewValue))); MemberProvider.Register(AttachedBindingMember .CreateAutoProperty(AttachedMembers.ActionBar.HomeButtonEnabled.Override <ActionBar>(), (actionBar, args) => actionBar.SetHomeButtonEnabled(args.NewValue))); MemberProvider.Register(AttachedBindingMember .CreateAutoProperty(AttachedMembers.ActionBar.Icon.Override <ActionBar>(), (actionBar, args) => { if (args.NewValue is int) { actionBar.SetIcon((int)args.NewValue); } else { actionBar.SetIcon((Drawable)args.NewValue); } })); MemberProvider.Register(AttachedBindingMember .CreateAutoProperty(AttachedMembers.ActionBar.Logo.Override <ActionBar>(), (actionBar, args) => { if (args.NewValue is int) { actionBar.SetLogo((int)args.NewValue); } else { actionBar.SetLogo((Drawable)args.NewValue); } })); MemberProvider.Register(AttachedBindingMember .CreateNotifiableMember(AttachedMembers.ActionBar.NavigationMode.Override <ActionBar>().Cast <ActionBarNavigationMode>(), (info, actionBar) => actionBar.GetNavigationMode(), ActionBarSetNavigationMode)); MemberProvider.Register(AttachedBindingMember .CreateAutoProperty(AttachedMembers.ActionBar.SplitBackgroundDrawable.Override <ActionBar>(), (actionBar, args) => { if (args.NewValue is int) { actionBar.SetSplitBackgroundDrawable( actionBar.ThemedContext.Resources.GetDrawable((int)args.NewValue)); } else { actionBar.SetSplitBackgroundDrawable((Drawable)args.NewValue); } })); MemberProvider.Register(AttachedBindingMember .CreateAutoProperty(AttachedMembers.ActionBar.StackedBackgroundDrawable.Override <ActionBar>(), (actionBar, args) => { if (args.NewValue is int) { actionBar.SetStackedBackgroundDrawable( actionBar.ThemedContext.Resources.GetDrawable((int)args.NewValue)); } else { actionBar.SetStackedBackgroundDrawable((Drawable)args.NewValue); } })); MemberProvider.Register(AttachedBindingMember .CreateNotifiableMember(AttachedMembers.ActionBar.IsShowing.Override <ActionBar>(), (info, actionBar) => actionBar.IsShowing, SetActionBarIsShowing)); MemberProvider.Register(AttachedBindingMember .CreateNotifiableMember(AttachedMembers.ActionBar.Visible.Override <ActionBar>(), (info, actionBar) => actionBar.IsShowing, SetActionBarIsShowing)); MemberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.ActionBar.DropDownItemTemplate.Override <ActionBar>())); MemberProvider.Register(AttachedBindingMember.CreateAutoProperty(AttachedMembers.ActionBar.DropDownItemTemplateSelector.Override <ActionBar>())); }