我正在根据Margaret Parsons的文章创建DataGrid角标头样式。
现在它看起来像这样:
<Style x:Key="DataGridColumnHeaderAngle"
TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridColumnHeader}">
<Grid x:Name="HeaderGrid" ShowGridLines="True"
Width="30">
<Rectangle Name="HeaderRect" Fill="Azure" Stroke="Black"
Width="{TemplateBinding Width}"
Height="{TemplateBinding Height}">
<Rectangle.RenderTransform>
<SkewTransform CenterX="0" AngleX="-60" AngleY="0"
CenterY="{Binding RelativeSource={RelativeSource TemplatedParent},
Path=ActualHeight }"/>
</Rectangle.RenderTransform>
</Rectangle>
<TextBlock Text="{TemplateBinding Content}"
Background="Aqua"
VerticalAlignment="Bottom" HorizontalAlignment="Left">
<TextBlock.LayoutTransform>
<RotateTransform Angle="-30"/>
</TextBlock.LayoutTransform>
<TextBlock.RenderTransform>
<TranslateTransform X="20"/>
</TextBlock.RenderTransform>
</TextBlock>
<!--ContentPresenter Content="{TemplateBinding Content}" Width="200"
VerticalAlignment="Bottom" HorizontalAlignment="Left">
<ContentPresenter.LayoutTransform>
<RotateTransform Angle="-30"/>
</ContentPresenter.LayoutTransform>
<ContentPresenter.RenderTransform>
<TranslateTransform X="18"/>
</ContentPresenter.RenderTransform>
</ContentPresenter-->
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
ContentPresenter
被更改为有颜色的TextBlock
,以便看到其边框。
我的问题是:默认情况下,列宽等于标题文本宽度,因此单元格占用不是最优的。当我减小列(HeaderGrid
)宽度(通过绑定/转换器或手动方式)时,标题文本宽度也会减小。
是否有任何方法可以缩小列宽而不削减标题文本?