17

我有一个包含许多列的 DataGrid。

Width="Auto"如果窗口比所有列都窄,我希望滚动条显示所有内容。如果窗口更宽,我希望列跨越空白空间,因此没有死区。

基本上我希望列最小宽度完全适合内容或标题。如果窗口更宽,则扩大到更大。

4

2 回答 2

28

为了DataGrid按照您的指定“填充” WPF 中的所有水平空间,请确保您在XAML中设置了这些属性:

<DataGrid 
   HorizontalAlignment="Stretch" 
   HorizontalContentAlignment="Stretch" 
   ColumnWidth="*" />
于 2013-05-21T04:17:43.940 回答
10

在 XAML 中设置 DataGridColumnWidth="Auto"

在 UserControl 构造函数中添加

dataGrid.Loaded += (s, e) => { // Column widths
    dataGrid.Columns.AsParallel().ForEach(column => {
        column.MinWidth = column.ActualWidth;
        column.Width = new DataGridLength(1, DataGridLengthUnitType.Star);
    });
};

将其与自定义 DataGrid 一起使用,效果很好。

于 2012-11-29T19:11:27.493 回答