我认为您需要在每列上设置一个静态宽度才能使其正常工作。我建议使用一个转换器,它采用您的 DataGrid 的宽度并将其除以您拥有的列数
我的博客上有一个相当简单的MathConverter,用于所有数学转换。IMultiValueConverter如果需要,它也很容易扩展到。最终结果将如下所示:
<DataGridTextColumn Width="{Binding ElementName=MyDataGrid, Path=ActualWidth,
Converter={StaticResource MathConverter}, ConverterParameter=@VALUE/2}" ... />
<DataGrid.Resources>如果您不想在每列上指定宽度,您甚至可以在隐式样式中应用宽度
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridColumn}">
<Setter Property="Width"
Value="{Binding ElementName=MyDataGrid,
Path=ActualWidth,
Converter={StaticResource MathConverter},
ConverterParameter=@VALUE/2}" />
</Style>
</DataGrid.Resources>