防止WPF数据网格列调整大小

本文关键字:调整 网格 WPF 数据 数据网 防止 | 更新日期: 2023-09-27 18:19:04

当绑定到的数据字段发生变化时,具有只读列的Datagrid将调整大小。

最初显示宽度约为100px,但由于外部数据源的变化导致它的大小调整为150px。

即使列内显示的数据得到改变,我想确保数据列宽度不改变。

设置MaxWidth可以修复这个问题,但是它阻止用户手动调整列的大小,这是不可接受的。

防止WPF数据网格列调整大小

如果您不像kyriacos_k answer那样自动生成列,您可以简单地设置列的宽度和数据网格本身的CanUserResizeColumns属性:

<DataGrid ItemsSource="{Binding YourSource}" 
                      CanUserResizeColumns="True"
                      EnableRowVirtualization="True">
    <DataGrid.Columns>
        <DataGridTextColumn Width="100" Header="CustomHeader" Binding="{Binding YourProperty, Mode=OneWay}"  />
    <DataGrid.Columns>
</DataGrid>

你可以使用AutoGeneratingColumn事件来处理那里的宽度

在XAML:

<DataGrid AutoGeneratingColumn="DataGrid_AutoGeneratingColumn"/>

后面的代码:

private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    e.Column.Width = new DataGridLength(100);
}

这将在生成列时限制列的大小,但仍然允许用户在加载后重新设置列的大小。