当数据字段绑定到更改时,具有只读列的Datagrid会调整大小。
最初显示的宽度大约为100px,但由于外部数据源的更改导致其调整大小为150px。
即使列中显示的数据发生变化,我也希望确保数据列宽不会改变。
设置MaxWidth可以解决此问题,但它会阻止用户手动调整列的大小,这是不可接受的。
答案 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>