/// <inheritdoc/> public override bool TryRecycle( int oldIndex, int newIndex, object item, IMemberSelector selector) { var container = ContainerFromIndex(oldIndex); if (container == null) { throw new IndexOutOfRangeException("Could not recycle container: not materialized."); } var i = selector != null?selector.Select(item) : item; container.SetValue(ContentProperty, i); if (!(item is IControl)) { container.DataContext = i; } var info = MoveContainer(oldIndex, newIndex, i); RaiseRecycled(new ItemContainerEventArgs(info)); return(true); }
/// <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; }
/// <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); }
/// <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(); }
/// <summary> /// Creates container controls for a collection of items. /// </summary> /// <param name="startingIndex"> /// The index of the first item of the data in the containing collection. /// </param> /// <param name="items">The items.</param> /// <param name="selector">An optional member selector.</param> /// <returns>The created container controls.</returns> public IList<IControl> CreateContainers( int startingIndex, IEnumerable items, IMemberSelector selector) { Contract.Requires<ArgumentNullException>(items != null); int index = startingIndex; var result = new List<IControl>(); foreach (var item in items) { var i = selector != null ? selector.Select(item) : item; var container = CreateContainer(i); result.Add(container); } AddContainers(startingIndex, result); _containersInitialized.OnNext(new ItemContainers(startingIndex, result)); return result.Where(x => x != null).ToList(); }
/// <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()); }
/// <inheritdoc/> public IEnumerable <IControl> Materialize( int startingIndex, IEnumerable items, IMemberSelector selector) { Contract.Requires <ArgumentNullException>(items != null); int index = startingIndex; var result = new List <IControl>(); foreach (var item in items) { var i = selector != null?selector.Select(item) : item; var container = CreateContainer(i); result.Add(container); } AddContainers(startingIndex, result); _containersInitialized.OnNext(new ItemContainers(startingIndex, result)); return(result.Where(x => x != null).ToList()); }