BaconographyWP8.Common.ReorderListBox.BuildRearrangeMap C# (CSharp) Method

BuildRearrangeMap() private method

Collects information about items and their positions before any changes are made.
private BuildRearrangeMap ( int viewFirstIndex, int viewLastIndex ) : RearrangeItemInfo[]
viewFirstIndex int
viewLastIndex int
return RearrangeItemInfo[]
        private RearrangeItemInfo[] BuildRearrangeMap(int viewFirstIndex, int viewLastIndex)
        {
            RearrangeItemInfo[] map = new RearrangeItemInfo[this.Items.Count];

            for (int i = 0; i < map.Length; i++)
            {
                object item = this.Items[i];

                RearrangeItemInfo info = new RearrangeItemInfo()
                {
                    Item = item,
                    FromIndex = i,
                };

                // The precise item location is only important if it's within the view.
                if (viewFirstIndex <= i && i <= viewLastIndex)
                {
                    ReorderListBoxItem itemContainer = (ReorderListBoxItem)
                        this.ItemContainerGenerator.ContainerFromIndex(i);
                    if (itemContainer != null)
                    {
                        GeneralTransform itemTransform = itemContainer.TransformToVisual(this.rearrangeCanvas);
                        Point itemPoint = itemTransform.Transform(new Point(0, 0));
                        info.FromY = itemPoint.Y;
                        info.Height = itemContainer.RenderSize.Height;
                    }
                }

                map[i] = info;
            }

            return map;
        }