阻止WPF Datagrid列调整大小

时间:2015-10-23 06:18:37

标签: c# wpf mahapps.metro

当数据字段绑定到更改时,具有只读列的Datagrid会调整大小。

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

即使列中显示的数据发生变化,我也希望确保数据列宽不会改变。

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

2 个答案:

答案 0 :(得分:0)

您可以使用AutoGeneratingColumn事件并处理其中的宽度。

在XAML中:

<DataGrid AutoGeneratingColumn="DataGrid_AutoGeneratingColumn"/>

在代码背后:

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

这实际上会在生成列时限制列大小,但仍然允许用户在加载后重新调整大小。

答案 1 :(得分:0)

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

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