private static void UpdateContent(ViewGroup sender, object newContent, object[] args) { if (newContent == null && args == RemoveViewValue) { return; } //NOTE cheking if it's a view group listener. if (args != null && args.Length == 2 && args[1] == AddViewValue) { return; } var templateId = sender.GetBindingMemberValue(AttachedMembers.ViewGroup.ContentTemplate); var templateSelector = sender.GetBindingMemberValue(AttachedMembers.ViewGroup.ContentTemplateSelector); newContent = PlatformExtensions.GetContentView(sender, sender.Context, newContent, templateId, templateSelector); var contentViewManager = sender.GetBindingMemberValue(AttachedMembers.ViewGroup.ContentViewManager); if (contentViewManager == null) { PlatformExtensions.SetContentView(sender, newContent); } else { contentViewManager.SetContent(sender, newContent); } }
private static void ViewGroupTemplateChanged <T>(ViewGroup sender, AttachedMemberChangedEventArgs <T> args) { var container = sender as AdapterView; if (container == null) { sender.GetBindingMemberValue(AttachedMembers.ViewGroup.ItemsSourceGenerator)?.Reset(); } else { (GetAdapter(container) as BaseAdapter)?.NotifyDataSetChanged(); } }
private static void ViewGroupItemsSourceChanged(ViewGroup sender, AttachedMemberChangedEventArgs <IEnumerable> args) { var container = sender as AdapterView; if (container == null) { var sourceGenerator = sender.GetBindingMemberValue(AttachedMembers.ViewGroup.ItemsSourceGenerator); if (sourceGenerator == null) { sourceGenerator = new ViewGroupItemsSourceGenerator(sender); sender.SetBindingMemberValue(AttachedMembers.ViewGroup.ItemsSourceGenerator, sourceGenerator); } sourceGenerator.SetItemsSource(args.NewValue); return; } var adapter = GetAdapter(container) as IItemsSourceAdapter; if (adapter == null) { adapter = ItemsSourceAdapter.Factory(container, container.Context, DataContext.Empty); SetAdapter(container, adapter); } adapter.ItemsSource = args.NewValue; }
private static void ContentTemplateIdChanged(ViewGroup sender, AttachedMemberChangedEventArgs <int?> args) { UpdateContent(sender, sender.GetBindingMemberValue(AttachedMembers.ViewGroup.Content), args.Args); }