/// <summary> /// <see cref="ChildGenerator"/> の新しいインスタンスを生成する。 /// </summary> /// <param name="owner">アイテムを生成する対象の <see cref="VirtualizingUniformSizeWrapPanel"/>。</param> public ChildGenerator(VirtualizingUniformSizeWrapPanel owner) { this.owner = owner; // ItemContainerGenerator 取得前に InternalChildren にアクセスしないと null になる var childrenCount = owner.InternalChildren.Count; this.generator = owner.ItemContainerGenerator; // TODO input InternalChildren created child. // generator=> // firstGeneratedIndex // lastGeneratedIndex var first = int.MaxValue; var last = -1; for(int i = 0; i < childrenCount; i++) { var childPos = new GeneratorPosition(i, 0); var index = generator.IndexFromGeneratorPosition(childPos); first = Math.Min(first, index); last = Math.Max(last, index); } if (first < int.MaxValue) firstGeneratedIndex = first; else firstGeneratedIndex = -1; if (last >= 0) lastGeneratedIndex = last; Console.WriteLine("F{0}:L{1}", firstGeneratedIndex, lastGeneratedIndex); }
public ChildGenerator(VirtualizingUniformSizeWrapPanel owner, int firstIndex, int endIndex) { this.owner = owner; // ItemContainerGenerator 取得前に InternalChildren にアクセスしないと null になる var childrenCount = owner.InternalChildren.Count; this.generator = owner.ItemContainerGenerator; // TODO input InternalChildren created child. // generator=> // firstGeneratedIndex // lastGeneratedIndex firstGeneratedIndex = firstIndex; lastGeneratedIndex = endIndex; // TODO validate Console.WriteLine("F{0}:L{1}", firstGeneratedIndex, lastGeneratedIndex); }