/// <summary> /// Initializes a new instance of the <see cref="ItemContainerEventArgs"/> class. /// </summary> /// <param name="startingIndex">The index of the first container in the source items.</param> /// <param name="container">The container.</param> public ItemContainerEventArgs( int startingIndex, ItemContainer container) { StartingIndex = startingIndex; Containers = new[] { container }; }
/// <inheritdoc/> public IEnumerable<ItemContainer> Materialize( int startingIndex, IEnumerable items, IMemberSelector selector) { Contract.Requires<ArgumentNullException>(items != null); int index = startingIndex; var result = new List<ItemContainer>(); foreach (var item in items) { var i = selector != null ? selector.Select(item) : item; var container = new ItemContainer(CreateContainer(i), item, index++); result.Add(container); } AddContainers(result); Materialized?.Invoke(this, new ItemContainerEventArgs(startingIndex, result)); return result.Where(x => x != null).ToList(); }