/// <summary> /// Adds an entry to the index. /// </summary> /// <param name="item">The item.</param> /// <param name="container">The item container.</param> public void Add(object item, IControl container) { _itemToContainer.Add(item, container); _containerToItem.Add(container, item); Materialized?.Invoke( this, new ItemContainerEventArgs(0, new ItemContainer(container, item, 0))); }
/// <inheritdoc/> public ItemContainerInfo Materialize(int index, object item) { var container = new ItemContainerInfo(CreateContainer(item), item, index); _containers.Add(container.Index, container); Materialized?.Invoke(this, new ItemContainerEventArgs(container)); return(container); }
/// <inheritdoc/> public ItemContainerInfo Materialize( int index, object item, IMemberSelector selector) { var i = selector != null?selector.Select(item) : item; var container = new ItemContainerInfo(CreateContainer(i), item, index); _containers.Add(container.Index, container); Materialized?.Invoke(this, new ItemContainerEventArgs(container)); return(container); }
/// <summary> /// Adds an entry to the index. /// </summary> /// <param name="item">The item.</param> /// <param name="container">The item container.</param> public void Add(object item, IControl container) { _itemToContainer[item] = container; if (_itemToContainerSet.TryGetValue(item, out var set)) { set.Add(container); } else { _itemToContainerSet.Add(item, new HashSet <IControl> { container }); } _containerToItem.Add(container, item); Materialized?.Invoke( this, new ItemContainerEventArgs(new ItemContainerInfo(container, item, 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()); }