2017-02-21 19 views
1

Я ищу примеры того, как программно изменить ширину столбца DataGrid на Auto, игнорируя текст из заголовка столбца (если содержимое заголовка длиннее самого длинного содержимого из колонки).Программно изменить ширину столбца DataGrid до самого длинного размера содержимого ячейки

+0

Вы используете DataGridView в форме Windows? –

+0

Set DataGrridColum Width = «Авто» не нужно устанавливать в коде. На основе размера заголовка он будет изменен – Ragavan

ответ

1

использование попробовать свойство sizeToCells (из MSDN)

как это для одного столбца:

grid.Columns[0].Width = new DataGridLength(1, DataGridLengthUnitType.SizeToCells); 
0

Вместо задающего Header свойство столбца в разметке XAML, как это:

<DataGrid x:Name="dg"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding}" Header="some very long header some very long header some very long header" /> 
     <DataGridTextColumn Binding="{Binding}" Header="short" /> 
    </DataGrid.Columns> 
</DataGrid> 

.. вы можете установить его программно после загрузки DataGrid:

<DataGrid x:Name="dg" Loaded="dg_Loaded"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding}" /> 
     <DataGridTextColumn Binding="{Binding}" Header="short" /> 
    </DataGrid.Columns> 
</DataGrid> 

private void dg_Loaded(object sender, RoutedEventArgs e) 
{ 
    dg.Columns[0].Width = new DataGridLength(dg.Columns[0].ActualWidth); 
    dg.Columns[0].Header = "some very long header some very long header some very long header"; 
} 

Тогда ширина столбца будет основываться на содержании клеток, но не только по длине заголовка.