Exemple #1
0
 public static void SetColumnStretchMode(DependencyObject obj, ColumnStretchMode value)
 {
     obj.SetValue(TableView.ColumnStretchModeProperty, value);
 }
    public void CalculateColumnStretchWidths( double widthToDistribute, ColumnStretchMode columnStretchMode, double columnStretchMinWidth )
    {
      if( m_columnStretchingDisabled )
        return;

      int currentDataGridScrollViewerMeasureVersion = 0;
      DataGridControl dataGridControl = m_dataGridContext.DataGridControl;

      if( dataGridControl != null )
      {
        DataGridScrollViewer scrollViewer = dataGridControl.ScrollViewer as DataGridScrollViewer;

        if( scrollViewer != null )
        {
          currentDataGridScrollViewerMeasureVersion = scrollViewer.MeasureVersion;
        }
      }

      this.ColumnStretchingCalculated = true;

      if( m_dataGridScrollViewerMeasureVersion != currentDataGridScrollViewerMeasureVersion )
      {
        // Reset the widthToDistribute since we are in a new pass of measure in the DataGridScrollViewer
        m_widthToDistribute = widthToDistribute;
        m_dataGridScrollViewerMeasureVersion = currentDataGridScrollViewerMeasureVersion;
      }
      else
      {
        if( widthToDistribute >= m_widthToDistribute )
        {
          widthToDistribute = m_widthToDistribute;
        }
        else
        {
          m_widthToDistribute = widthToDistribute;
        }
      }

      List<WorkingColumnWidth> excludedColumns = null;
      ColumnBase stretchedColumn = null;
      ReadOnlyObservableCollection<ColumnBase> visibleColumns = m_dataGridContext.VisibleColumns;

      if( visibleColumns.Count == 0 )
        return;

      switch( columnStretchMode )
      {
        case ColumnStretchMode.First:
          stretchedColumn = visibleColumns[ 0 ];
          excludedColumns = new List<WorkingColumnWidth>( 1 );
          break;

        case ColumnStretchMode.Last:
          stretchedColumn = visibleColumns[ visibleColumns.Count - 1 ];
          excludedColumns = new List<WorkingColumnWidth>( 1 );
          break;

        case ColumnStretchMode.All:
          excludedColumns = new List<WorkingColumnWidth>( visibleColumns.Count );
          foreach( ColumnBase column in visibleColumns )
          {
            excludedColumns.Add( new WorkingColumnWidth( column, 1d, columnStretchMinWidth ) );
          }
          break;

        case ColumnStretchMode.None:
          foreach( ColumnBase column in visibleColumns )
          {
            if( column.Width.UnitType == ColumnWidthUnitType.Star )
            {
              if( excludedColumns == null )
                excludedColumns = new List<WorkingColumnWidth>();

              excludedColumns.Add( new WorkingColumnWidth( column, column.Width.Value, columnStretchMinWidth ) );
            }
            else
            {
              column.ClearValue( Column.DesiredWidthProperty );
              widthToDistribute -= column.ActualWidth;
            }
          }
          break;
      }

      if( excludedColumns != null )
      {
        if( stretchedColumn != null )
        {
          foreach( ColumnBase column in visibleColumns )
          {
            if( column == stretchedColumn )
            {
              excludedColumns.Add( new WorkingColumnWidth( column, 1, columnStretchMinWidth ) );
            }
            else
            {
              column.ClearValue( Column.DesiredWidthProperty );
              widthToDistribute -= column.ActualWidth;
            }
          }
        }

        this.CalculateColumnDesiredWidth( widthToDistribute, excludedColumns );
      }
    }
Exemple #3
0
 public static void SetColumnStretchMode( DependencyObject obj, ColumnStretchMode value )
 {
   obj.SetValue( TableView.ColumnStretchModeProperty, value );
 }
        public void CalculateColumnStretchWidths(double widthToDistribute, ColumnStretchMode columnStretchMode, double columnStretchMinWidth)
        {
            if (m_columnStretchingDisabled)
            {
                return;
            }

            int             currentDataGridScrollViewerMeasureVersion = 0;
            DataGridControl dataGridControl = m_dataGridContext.DataGridControl;

            if (dataGridControl != null)
            {
                DataGridScrollViewer scrollViewer = dataGridControl.ScrollViewer as DataGridScrollViewer;

                if (scrollViewer != null)
                {
                    currentDataGridScrollViewerMeasureVersion = scrollViewer.MeasureVersion;
                }
            }

            this.ColumnStretchingCalculated = true;

            if (m_dataGridScrollViewerMeasureVersion != currentDataGridScrollViewerMeasureVersion)
            {
                // Reset the widthToDistribute since we are in a new pass of measure in the DataGridScrollViewer
                m_widthToDistribute = widthToDistribute;
                m_dataGridScrollViewerMeasureVersion = currentDataGridScrollViewerMeasureVersion;
            }
            else
            {
                if (widthToDistribute >= m_widthToDistribute)
                {
                    widthToDistribute = m_widthToDistribute;
                }
                else
                {
                    m_widthToDistribute = widthToDistribute;
                }
            }

            List <WorkingColumnWidth> excludedColumns = null;
            ColumnBase stretchedColumn = null;
            ReadOnlyObservableCollection <ColumnBase> visibleColumns = m_dataGridContext.VisibleColumns;

            if (visibleColumns.Count == 0)
            {
                return;
            }

            switch (columnStretchMode)
            {
            case ColumnStretchMode.First:
                stretchedColumn = visibleColumns[0];
                excludedColumns = new List <WorkingColumnWidth>(1);
                break;

            case ColumnStretchMode.Last:
                stretchedColumn = visibleColumns[visibleColumns.Count - 1];
                excludedColumns = new List <WorkingColumnWidth>(1);
                break;

            case ColumnStretchMode.All:
                excludedColumns = new List <WorkingColumnWidth>(visibleColumns.Count);
                foreach (ColumnBase column in visibleColumns)
                {
                    excludedColumns.Add(new WorkingColumnWidth(column, 1d, columnStretchMinWidth));
                }
                break;

            case ColumnStretchMode.None:
                foreach (ColumnBase column in visibleColumns)
                {
                    if (column.Width.UnitType == ColumnWidthUnitType.Star)
                    {
                        if (excludedColumns == null)
                        {
                            excludedColumns = new List <WorkingColumnWidth>();
                        }

                        excludedColumns.Add(new WorkingColumnWidth(column, column.Width.Value, columnStretchMinWidth));
                    }
                    else
                    {
                        column.ClearValue(Column.DesiredWidthProperty);
                        widthToDistribute -= column.ActualWidth;
                    }
                }
                break;
            }

            if (excludedColumns != null)
            {
                if (stretchedColumn != null)
                {
                    foreach (ColumnBase column in visibleColumns)
                    {
                        if (column == stretchedColumn)
                        {
                            excludedColumns.Add(new WorkingColumnWidth(column, 1, columnStretchMinWidth));
                        }
                        else
                        {
                            column.ClearValue(Column.DesiredWidthProperty);
                            widthToDistribute -= column.ActualWidth;
                        }
                    }
                }

                this.CalculateColumnDesiredWidth(widthToDistribute, excludedColumns);
            }
        }