Example #1
0
        static CellGroup GetCellGroup(ITemplatedItemsList <Cell> templatedItems, CellCacheProvider cacheProvider)
        {
            var result = new CellGroup();

            result.Header  = templatedItems.HeaderContent;
            result.Content = new List <Cell>();

            for (int i = 0; i < templatedItems.Count; i++)
            {
                var  item      = templatedItems.ListProxy[i];
                var  cellCache = cacheProvider.GetCellCache(item);
                Cell cell      = cellCache.GetNextUnusedCell();

                if (cell != null)
                {
                    cell.SendDisappearing();
                    templatedItems.UpdateContent(cell, i);
                    cell.SendAppearing();
                }
                else
                {
                    cell = templatedItems[i];
                    cellCache.AddUsedCell(cell);
                    cell.SendAppearing();
                }

                result.Content.Add(cell);
            }
            return(result);
        }
Example #2
0
        public TemplatedItemsListProxy(ListView listview)
        {
            this.listview = listview;
            templated     = ((ITemplatedItemsView <Cell>)listview).TemplatedItems;
            templated.CollectionChanged += Templated_CollectionChanged;

            UpdateHeader();
            UpdateFooter();
        }
Example #3
0
        static Cell RealizeItemTemplate(ITemplatedItemsList <Cell> templatedItems,
                                        ElementTemplate template, object context)
        {
            var index = templatedItems.GetGlobalIndexOfItem(context);

            if (index > -1)
            {
                return(templatedItems[index]);
            }

            return(template.CreateContent() as Cell);
        }
Example #4
0
        static Cell RealizeGroupedItemTemplate(ITemplatedItemsList <Cell> templatedItems,
                                               ElementTemplate template, object context)
        {
            var indices = templatedItems.GetGroupAndIndexOfItem(context);

            if (indices.Item1 > -1 && indices.Item2 > -1)
            {
                var group = templatedItems.GetGroup(indices.Item1);
                return(group[indices.Item2]);
            }

            return(template.CreateContent() as Cell);
        }
Example #5
0
        private bool HasHeader(ITemplatedItemsList <Cell> group)
        {
            if (Element == null)
            {
                return(false);
            }

            if (group.HeaderContent != null &&
                Element.GroupShortNameBinding != null ||
                Element.GroupHeaderTemplate != null)
            {
                return(true);
            }

            return(false);
        }
Example #6
0
        Cell GetNewGroupHeaderCell(ITemplatedItemsList <Cell> group)
        {
            var groupHeaderCell = _listView.TemplatedItems.GroupHeaderTemplate?.CreateContent(group.ItemsSource, _listView) as Cell;

            if (groupHeaderCell != null)
            {
                groupHeaderCell.BindingContext = group.ItemsSource;
            }
            else
            {
                groupHeaderCell = new TextCell();
                groupHeaderCell.SetBinding(TextCell.TextProperty, nameof(group.Name));
                groupHeaderCell.BindingContext = group;
            }

            groupHeaderCell.Parent = _listView;
            groupHeaderCell.SetIsGroupHeader <ItemsView <Cell>, Cell>(true);
            return(groupHeaderCell);
        }