<Style TargetType="DataGridColumnHeader">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridColumnHeader}">
<Border x:Name="buttonBorderOuter"
BorderBrush="#DBDBDB"
BorderThickness="1"
Background="#00ECECEC"
Padding="2">
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
<Border.Triggers>
<EventTrigger RoutedEvent="MouseEnter">
<BeginStoryboard>
<Storyboard>
...
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="MouseLeave">
<BeginStoryboard>
<Storyboard>
...
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Border.Triggers>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
以上代码显示Style
的{{1}}。 DataGridColumnHeader
和MouseEnter
效果很好,但有些小事我不喜欢。我现在就在这下面。
此处的问题是MouseLeave
中的每个Cell
都有圆角边框。我希望Header
中的2 Cells
之间是1条直线。此外,当我点击Header
中的Cells
之一时,没有显示排序的箭头,也没有突出显示该列已排序。
有人有模板我可以编辑自己来实现我想要的吗?或者我要编辑的部分是什么?
答案 0 :(得分:1)
默认情况下,DataGridColumnHeadersPresenter在DataGrid标题的背景中绘制一个额外的列标题。只需省略虚拟标题即可获得所需内容。将该样式添加到样式中:
<Style TargetType="{x:Type DataGridColumnHeadersPresenter}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridColumnHeadersPresenter}">
<Grid>
<ItemsPresenter />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>