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); }
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); }