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