Пример #1
0
 /// <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 };
 }
Пример #2
0
        /// <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();
        }