C# 如何在WPF DataGrid的列标题中设置垂直文本?
事实上,我的意思是从水平方向旋转90度 我需要这样做,因为标题的文本很长,但单元格值很短,我想在屏幕上显示很多列C# 如何在WPF DataGrid的列标题中设置垂直文本?,c#,wpf,wpfdatagrid,C#,Wpf,Wpfdatagrid,事实上,我的意思是从水平方向旋转90度 我需要这样做,因为标题的文本很长,但单元格值很短,我想在屏幕上显示很多列 是否可以轻松做到这一点,还是需要先了解资源和模板?我不介意“黑客”解决方案 这将旋转整个ColumnHeaderCell: <DataGrid.ColumnHeaderStyle> <Style TargetType="{x:Type DataGridColumnHeader}"> <Setter Property="Layout
是否可以轻松做到这一点,还是需要先了解资源和模板?我不介意“黑客”解决方案 这将旋转整个ColumnHeaderCell:
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="LayoutTransform">
<Setter.Value>
<RotateTransform Angle="270" />
</Setter.Value>
</Setter>
</Style>
</DataGrid.ColumnHeaderStyle>
请注意:这意味着
HorizontalContentAlignment
就是VerticalContentAlignment
,反之亦然。下面是另一种方法:
<Style x:Key="soDataGrid_ColumnHeaderRotateStyle" TargetType="DataGridColumnHeader" >
<Setter Property="ContentTemplate" >
<Setter.Value>
<DataTemplate>
<TextBlock TextWrapping="Wrap" Text="{Binding}"
FontWeight="Bold" Width="60"
VerticalAlignment="Center" TextAlignment="Center"
HorizontalAlignment="Center">
<TextBlock.LayoutTransform>
<RotateTransform Angle="270" />
</TextBlock.LayoutTransform>
</TextBlock>
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="HorizontalContentAlignment" Value="Center" />
</Style>
您可以使用以下样式
<DataGridComboBoxColumn Header="Portrait / 
Landscape" Width="42"
HeaderStyle="{StaticResource soDataGrid_ColumnHeaderRotateStyle}"
SelectedItemBinding="{Binding Orientation}"
ItemsSource="{Binding Mode=OneWay,
Source={StaticResource languageEnum}}" />
我发现这种方法给了你很多控制。在长标题文本中使用换行代码很有帮助
不幸的是,我发现您需要硬编码旋转文本块的宽度-也许有更好的方法根据文本内容设置此宽度。请注意,此方法会干扰datagrid的列大小调整行为。此方法允许按预期调整列大小+1.