WPF - 如何自动调整DataGrid列的大小以适应内容

时间:2015-10-16 04:49:30

标签: wpf xaml datagrid mvvm-light

我有一个显示一些数据的WPF DataGrid。现在我想为某些特定列设置自动调整大小,而不是全部。这是我目前的DataGrid行为:

enter image description here

enter image description here

这是我的期望(列宽应符合其内容):

enter image description here

XAML

...
<DataGridTextColumn Binding="{Binding ShippingNumber}" Header="出荷No." ElementStyle="{DynamicResource TextAlignCenter}" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding DivisionDisplay}" Header="区分" ElementStyle="{DynamicResource TextAlignCenter}" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding ShippingDestinationCode}" Header="出荷先コード" ElementStyle="{DynamicResource TextAlignCenter}" IsReadOnly="True"/>
<DataGridTextColumn Width="Auto" Binding="{Binding ShippingDestinationNameDisplay}" Header="出荷先名" ElementStyle="{DynamicResource TextAlignCenter}" IsReadOnly="True"/>
<DataGridCheckBoxColumn Binding="{Binding IsCompletedStockOutcomming}" Header="出庫済み" IsReadOnly="True">
    <DataGridCheckBoxColumn.ElementStyle>
         <Style TargetType="CheckBox" BasedOn="{StaticResource {x:Type CheckBox}}">
              <Setter Property="HorizontalAlignment" Value="Center"/>
              <Setter Property="Margin" Value="0"/>
              <Setter Property="IsHitTestVisible" Value="False"/>
              <Setter Property="Focusable" Value="False"/>
         </Style>
     </DataGridCheckBoxColumn.ElementStyle>
</DataGridCheckBoxColumn>

我的项目正在应用MVVM指示灯模式,因此它不允许在ViewModel中将任何代码放在代码隐藏中。 我也设置With="Auto"但仍然没用。任何人都可以帮助我使它有效吗?感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用DataGridLengthUnitType SizeToCells枚举器选项,因为根据单元格的内容计算列宽。