C# 防止WPF Datagrid列大小调整

C# 防止WPF Datagrid列大小调整,c#,wpf,mahapps.metro,C#,Wpf,Mahapps.metro,具有只读列的Datagrid在绑定到它的数据字段更改时会调整大小 最初,它的显示宽度约为100px,但由于外部数据源的变化,它的大小调整为150px 即使列中显示的数据发生了更改,我仍希望确保数据列的宽度不会更改 设置MaxWidth可以解决此问题,但它会阻止用户手动调整列的大小,这是不可接受的。您可以使用AutoGeneratingColumn事件并在其中处理宽度 在XAML中: <DataGrid AutoGeneratingColumn="DataGrid_AutoGeneratin

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

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

即使列中显示的数据发生了更改,我仍希望确保数据列的宽度不会更改


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

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

在XAML中:

<DataGrid AutoGeneratingColumn="DataGrid_AutoGeneratingColumn"/>

这将在生成列时基本上限制列大小,但仍然允许用户在加载列后重新调整其大小。

如果您没有像kyriacos_k Answare中那样自动生成列,您只需设置列的宽度和datagrid本身的CanUserResizeColumns属性:

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


列不是自动生成的。这只有在自动生成列的情况下才会起作用。虽然是这样,但看看0xBADF00D的答案,我最终不得不从这里开始使用解决方案-
<DataGrid ItemsSource="{Binding YourSource}" 
                      CanUserResizeColumns="True"
                      EnableRowVirtualization="True">
    <DataGrid.Columns>
        <DataGridTextColumn Width="100" Header="CustomHeader" Binding="{Binding YourProperty, Mode=OneWay}"  />
    <DataGrid.Columns>
</DataGrid>