void AddToColumnsLayout(PivotMemberItem member)
        {
            if (member != null)
            {
                // Для данного элемента пытаемся получить по координатам LayoutCellWrapper
                LayoutCellWrapper itemWrapper = ColumnsLayout[member.ColumnIndex, member.RowIndex];
                if (itemWrapper == null)
                {
                    itemWrapper = new LayoutCellWrapper();
                    ColumnsLayout.Add(itemWrapper, member.ColumnIndex, member.RowIndex);
                }

                // Создаем описатель для данного элемента и добавляем его в коллекцию объектов ячейки сетки
                MemberLayoutItem item = new MemberLayoutItem(member);
                itemWrapper.Items.Add(item);
                item.RowSpan    = member.RowSpan;
                item.ColumnSpan = member.ColumnSpan;

                // Если элемент в ширину больше чем 1, то добавляем фиктивные элементы на сетку
                for (int i = 1; i < member.ColumnSpan; i++)
                {
                    LayoutCellWrapper ext_itemWrapper = ColumnsLayout[member.ColumnIndex + i, member.RowIndex];
                    if (ext_itemWrapper == null)
                    {
                        ext_itemWrapper = new LayoutCellWrapper();
                        ColumnsLayout.Add(ext_itemWrapper, member.ColumnIndex + i, member.RowIndex);
                    }

                    // Создаем описатель для фиктивного элемента
                    MemberLayoutItem ext_item = new MemberLayoutItem(member);
                    ext_item.IsExtension = true;
                    ext_itemWrapper.Items.Add(ext_item);
                    ext_item.ColumnSpan = member.ColumnSpan - i;
                    ext_item.RowSpan    = member.RowSpan;
                }

                foreach (PivotMemberItem dd_item in member.DrillDownChildren)
                {
                    AddToColumnsLayout(dd_item);
                }
                foreach (PivotMemberItem child_item in member.Children)
                {
                    AddToColumnsLayout(child_item);
                }
            }
        }
        void AddToColumnsLayout(PivotMemberItem member)
        {
            if (member != null)
            {
                // Для данного элемента пытаемся получить по координатам LayoutCellWrapper
                LayoutCellWrapper itemWrapper = ColumnsLayout[member.ColumnIndex, member.RowIndex];
                if (itemWrapper == null)
                {
                    itemWrapper = new LayoutCellWrapper();
                    ColumnsLayout.Add(itemWrapper, member.ColumnIndex, member.RowIndex);
                }

                // Создаем описатель для данного элемента и добавляем его в коллекцию объектов ячейки сетки
                MemberLayoutItem item = new MemberLayoutItem(member);
                itemWrapper.Items.Add(item);
                item.RowSpan = member.RowSpan;
                item.ColumnSpan = member.ColumnSpan;

                // Если элемент в ширину больше чем 1, то добавляем фиктивные элементы на сетку
                for (int i = 1; i < member.ColumnSpan; i++)
                {
                    LayoutCellWrapper ext_itemWrapper = ColumnsLayout[member.ColumnIndex + i, member.RowIndex];
                    if (ext_itemWrapper == null)
                    {
                        ext_itemWrapper = new LayoutCellWrapper();
                        ColumnsLayout.Add(ext_itemWrapper, member.ColumnIndex + i, member.RowIndex);
                    }

                    // Создаем описатель для фиктивного элемента
                    MemberLayoutItem ext_item = new MemberLayoutItem(member);
                    ext_item.IsExtension = true;
                    ext_itemWrapper.Items.Add(ext_item);
                    ext_item.ColumnSpan = member.ColumnSpan - i;
                    ext_item.RowSpan = member.RowSpan;
                }

                foreach (PivotMemberItem dd_item in member.DrillDownChildren)
                {
                    AddToColumnsLayout(dd_item);
                }
                foreach (PivotMemberItem child_item in member.Children)
                {
                    AddToColumnsLayout(child_item);
                }
            }
        }