2017-02-21 40 views

回答

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

然后列的宽度将基于单元格内容仅但是不能在报头的长度。

相关问题