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