コード例 #1
0
        void OnItemSelected(object sender, GenGridItemEventArgs e)
        {
            GengridItemContext context = e.Item.Data as GengridItemContext;

            Element.SelectedItem = context.Data;
            (Element as IGridViewController)?.SendItemSelected(new SelectedItemChangedEventArgs(context.Data, _itemList.IndexOf(context.Data)));
        }
コード例 #2
0
        View CreateOrGetRealView(GengridItemContext context)
        {
            if (context.RealizedView != null)
            {
                return(context.RealizedView);
            }
            var realView = CreateView(Element.ItemTemplate);

            realView.BindingContext = context.Data;
            realView.Parent         = Element;
            context.RealizedView    = realView;
            return(realView);
        }
コード例 #3
0
        void OnItemFocused(object sender, GenGridItemEventArgs e)
        {
            if (e.Item == null)
            {
                return;
            }

            GengridItemContext context = e.Item.Data as GengridItemContext;

            if (context.RealizedView == null)
            {
                context.RealizedView = CreateOrGetRealView(context);
            }
            (Element as IGridViewController)?.SendItemFocused(new GridViewFocusedEventArgs(context.Data, context.RealizedView, true));
        }
コード例 #4
0
        EvasObject GetGridViewContent(object data, string part)
        {
            GengridItemContext context = (GengridItemContext)data;

            if (context.RealizedView == null)
            {
                context.RealizedView = CreateOrGetRealView(context);
            }

            if (part == "elm.swallow.icon")
            {
                var renderer = Platform.GetOrCreateRenderer(context.RealizedView);
                (renderer as LayoutRenderer)?.RegisterOnLayoutUpdated();
                return(renderer.NativeView);
            }
            return(null);
        }
コード例 #5
0
        void UpdateItemsSource()
        {
            Control.Clear();
            _gengridItemDic.Clear();
            _itemHandleDic.Clear();
            _itemList.Clear();

            if (_collectionChanged != null)
            {
                _collectionChanged.CollectionChanged -= OnCollectionChanged;
                _collectionChanged = null;
            }

            if (Element.ItemsSource == null)
            {
                return;
            }

            foreach (var item in Element.ItemsSource)
            {
                var context = new GengridItemContext
                {
                    Data         = item,
                    RealizedView = null,
                };
                var    gridItem = Control.Append(_gridItemClass, context);
                IntPtr handle   = gridItem;
                _itemHandleDic.Add(handle, gridItem);
                _gengridItemDic.Add(item, gridItem);
                _itemList.Add(item);
            }

            if (Element.ItemsSource is INotifyCollectionChanged collection)
            {
                _collectionChanged            = collection;
                collection.CollectionChanged += OnCollectionChanged;
            }
        }