这个问题是这个问题的续集:DataGridColumnHeader Style
<Style TargetType="DataGridColumnHeader">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridColumnHeader}">
<Border BorderBrush="#DBDBDB"
BorderThickness="1 0 0 0"
Background="#00ECECEC"
Padding="3">
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
<Border.Triggers>
...
</Border.Triggers>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>上面的代码显示了我的Style用于DataGridColumnHeader和DataGridColumnHeadersPresenter。触发器按我想要的方式工作,但有些小事情我不喜欢。下面就是我现在所拥有的东西。
图像删除.
这里的问题是,第一个单元格的左边有一个边框。原因很清楚,因为我的代码中有这样的代码:BorderThickness="1 0 0 0"。
图像删除.
第二个问题是在标题的右边。如果在单元格上Hover,则触发器将单元格涂成灰色。您可以看到灰色覆盖了DataGridColumnHeadersPresenter边框,因为这些单元格是矩形的,而DataGridColumnHeadersPresenter有圆角。
图像删除.
我几乎得到了我想要的,那就是:
发布于 2014-07-28 11:11:29
解决我的问题的方法是在我的代码后面分配样式,而不是xaml本身。以下是代码:
if (gridColumns.Count > 0)
{
for (int i = 0; i < gridColumns.Count; i++)
{
DataGridTextColumn column = new DataGridTextColumn();
column.Header = gridColumns[i].ColumnName;
column.Binding = new Binding(gridColumns[i].ColumnBinding);
if (i == 0)
column.HeaderStyle = (Style)this.FindResource("ColumnHeaderStyleLeft");
else if (i == gridColumns.Count - 1)
column.HeaderStyle = (Style)this.FindResource("ColumnHeaderStyleRight");
else
column.HeaderStyle = (Style)this.FindResource("ColumnHeaderStyleCenter");
dataGrid.Columns.Add(column);
}
}https://stackoverflow.com/questions/24886569
复制相似问题