public void SetSizeInfo(PivotGridSizeInfo sizeInfo)
        {

            // Область колонок
            m_MembersWidthes.Clear();
            // Ширины элементов
            foreach (MemberSizeInfo member_size in sizeInfo.ColumnsAreaSize.MembersSize)
            {
                if (!String.IsNullOrEmpty(member_size.MemberUniqueName) && member_size.Size >= 0)
                {
                    m_MembersWidthes.Add(member_size.MemberUniqueName, member_size.Size);
                }
            }

            // Высоты строк
            foreach (LineSizeInfo line_size in sizeInfo.ColumnsAreaSize.LinesSize)
            {
                m_Columns_RowsHeightes[line_size.LineIndex] = line_size.Size;
            }

            // Область строк
            m_MembersHeightes.Clear();
            // Высоты элементов
            foreach (MemberSizeInfo member_size in sizeInfo.RowsAreaSize.MembersSize)
            {
                if (!String.IsNullOrEmpty(member_size.MemberUniqueName) && member_size.Size >= 0)
                {
                    m_MembersHeightes.Add(member_size.MemberUniqueName, member_size.Size);
                }
            }
            // Ширины колонок
            foreach (LineSizeInfo line_size in sizeInfo.RowsAreaSize.LinesSize)
            {
                m_Rows_ColumnWidthes[line_size.LineIndex] = line_size.Size;
            }

            // Это приведет к пересчету масштаба
            double OldScale = Scale;
            m_Scale = sizeInfo.Scale;
            Scale = OldScale;
        }
        public PivotGridSizeInfo GetSizeInfo()
        {
            PivotGridSizeInfo sizeInfo = new PivotGridSizeInfo();

            sizeInfo.Scale = Scale;

            // Область колонок
            sizeInfo.ColumnsAreaSize = new MembersAreaSizeInfo();
            // Ширины элементов
            foreach (String uniqueName in m_MembersWidthes.Keys)
            {
                MemberSizeInfo member_size = new MemberSizeInfo(uniqueName, m_MembersWidthes[uniqueName]);
                sizeInfo.ColumnsAreaSize.MembersSize.Add(member_size);
            }
            // Высоты строк
            foreach (int indx in m_Columns_RowsHeightes.Keys)
            {
                LineSizeInfo line_size = new LineSizeInfo(indx, m_Columns_RowsHeightes[indx]);
                sizeInfo.ColumnsAreaSize.LinesSize.Add(line_size);
            }
            // Старая реализация - размеры всех строк
            //for (int i = PivotArea_BeginRowIndex, indx = 0; i < ColumnsArea_RowsCount; i++, indx++)
            //{
            //    if (i < ItemsLayoutRoot.RowDefinitions.Count)
            //    {
            //        RowDefinition current_row = ItemsLayoutRoot.RowDefinitions[i];
            //        LineSizeInfo line_size = new LineSizeInfo(indx, current_row.ActualHeight);
            //        sizeInfo.ColumnsAreaSize.LinesSize.Add(line_size);
            //    }
            //}

            // Область строк
            sizeInfo.RowsAreaSize = new MembersAreaSizeInfo();
            // Высоты элементов
            foreach (String uniqueName in m_MembersHeightes.Keys)
            {
                MemberSizeInfo member_size = new MemberSizeInfo(uniqueName, m_MembersHeightes[uniqueName]);
                sizeInfo.RowsAreaSize.MembersSize.Add(member_size);
            }
            // Ширины колонок
            foreach (int indx in m_Rows_ColumnWidthes.Keys)
            {
                LineSizeInfo line_size = new LineSizeInfo(indx, m_Rows_ColumnWidthes[indx]);
                sizeInfo.RowsAreaSize.LinesSize.Add(line_size);
            }
            // Старая реализация - размеры всех колонок
            //for (int i = PivotArea_BeginColumnIndex, indx = 0; i < RowsArea_ColumnsCount; i++, indx++)
            //{
            //    if (i < ItemsLayoutRoot.ColumnDefinitions.Count)
            //    {
            //        ColumnDefinition current_column = ItemsLayoutRoot.ColumnDefinitions[i];
            //        LineSizeInfo line_size = new LineSizeInfo(indx, current_column.ActualWidth);
            //        sizeInfo.RowsAreaSize.LinesSize.Add(line_size);
            //    }
            //}

            return sizeInfo;
        }