实际上,我指的是将文本从水平方向旋转-90度。
我需要这样做是因为标题文本很长,但单元格值很短,我想在屏幕上放置很多列。
这是否容易实现,还是我需要先了解资源和模板? 我不介意使用"hack"的解决方案!
实际上,我指的是将文本从水平方向旋转-90度。
我需要这样做是因为标题文本很长,但单元格值很短,我想在屏幕上放置很多列。
这是否容易实现,还是我需要先了解资源和模板? 我不介意使用"hack"的解决方案!
<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}}" />
我发现这种方法能让你有很多控制权。在长标题文本中使用换行代码会很有帮助。
不幸的是,我发现你需要硬编码旋转文本块的宽度 - 也许有更好的方法可以根据文本内容设置宽度。