Ejemplo n.º 1
0
        public GroupCollection <TItem, TGroup> AddItem(TItem item)
        {
            EnsureItems();

            var add = new GroupCollectionItem <TItem>()
            {
                Item       = item,
                Index      = _items.Count,
                GroupIndex = -1
            };

            _items.Add(add);

            return(this);
        }
Ejemplo n.º 2
0
        public GroupCollection <TItem, TGroup> AddItem(TItem item, int groupIndex)
        {
            EnsureItems();
            EnsureGroups();

            if (groupIndex < 0 || groupIndex >= _groups.Count)
            {
                throw new ArgumentException(string.Format("invalid index {0}", groupIndex));
            }

            var add = new GroupCollectionItem <TItem>()
            {
                Item       = item,
                GroupIndex = groupIndex
            };

            var first = _items.FirstOrDefault(e => e.GroupIndex > groupIndex || e.GroupIndex == -1);

            if (first == null)
            {
                add.Index = _items.Count;
                _items.Add(add);
            }
            else
            {
                add.Index = first.Index;

                foreach (var i in _items.Where(e => e.Index >= add.Index))
                {
                    i.Index++;
                }

                _items.Insert(add.Index, add);
            }

            var group = _groups[groupIndex];

            group.ItemCount++;

            return(this);
        }