コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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();
            }
        }
コード例 #3
0
        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;
        }
コード例 #4
0
 private static void ContentTemplateIdChanged(ViewGroup sender, AttachedMemberChangedEventArgs <int?> args)
 {
     UpdateContent(sender, sender.GetBindingMemberValue(AttachedMembers.ViewGroup.Content), args.Args);
 }