Это зависит от того, где вы хотите эту двойную линию. Вертикальные GridLines рисуются в OnRender
для DataGridCell
, а горизонтальные GridLines рисуются в OnRender
для DataGridCellsPresenter
. Однако граница для DataGridColumnHeader
сложнее. Это прямоугольник, который нарисован в методе RenderTheme
в DataGridHeaderBorder
, и я не думаю, что существует прямой способ изменить его ширину без повторного шаблонирования всего DataGridColumnHeader
. Кроме того, толщина границ для заголовков в два раза больше, чем ячейки в DataGrid
, чтобы начать с (1px против 2px), потому что заголовки рисуют свои разделители с обеих сторон.
Итак, чтобы получить толщину двойной линии, которая влияет только на ячейки, вы можете добавить специальный стиль DataGridCell
, где вы хотите, чтобы это применимо. Все эти клеточные стили - это рисовать границу 1px слева в том же цвете, что и GridLines. Это будет выглядеть как этот
<DataGrid ...
HorizontalGridLinesBrush="Black">
<DataGrid.Resources>
<Style x:Key="DoubleLeftBorderCell" TargetType="DataGridCell">
<Setter Property="BorderThickness" Value="1,0,0,0"/>
<Setter Property="BorderBrush" Value="{Binding ElementName=dataGrid, Path=HorizontalGridLinesBrush}"/>
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Header="Double left Border"
CellStyle="{StaticResource DoubleLeftBorderCell}"
Binding="{Binding TextProperty}"/>
</DataGrid.Columns>
</DataGrid>
Там нет Mouseover эффект или что-нибудь на клетки, чтобы беспокоиться о. Если вы сделаете что-то подобное для DataGridColumnHeader
, вы потеряете стрелки сортировки, эффект мыши, эффект mousedown и т. Д., Так что вам нужно будет создать для него весь шаблон