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; }