DataGrid의 한 열에 어떻게 사용자 정의 그리드 선 스타일을 설정합니까? 특히 한 열의 왼쪽 테두리로 이중선을 사용하고 싶습니다.하나의 열에 대해서만 특별 눈금 선 스타일
예 :
| Col1 | Col2 || Col3 (w/ Double Left Border) |
, 당신을 감사
벤
DataGrid의 한 열에 어떻게 사용자 정의 그리드 선 스타일을 설정합니까? 특히 한 열의 왼쪽 테두리로 이중선을 사용하고 싶습니다.하나의 열에 대해서만 특별 눈금 선 스타일
예 :
| Col1 | Col2 || Col3 (w/ Double Left Border) |
, 당신을 감사
그것은 당신이 이중 라인을 원하는 위치에 따라 달라집니다. 수직 GridLine은 DataGridCell
에 대해 OnRender
으로 그려지고, 수평 GridLines는 DataGridCellsPresenter
에 대해 OnRender
으로 그려집니다. 그러나 DataGridColumnHeader
의 경계는 더 복잡합니다. 그것은 DataGridHeaderBorder
에 RenderTheme
메서드로 그려진 Rectangle입니다. 전체 DataGridColumnHeader
을 다시 템플릿하지 않고도 너비를 변경할 수있는 방법은 없다고 생각합니다. 또한 헤더의 경계선 두께는 DataGrid
의 셀 수 (두꺼운 대 2px)의 두 배입니다. 헤더가 양쪽에 구분 기호를 사용하기 때문입니다.
셀에 영향을주는 이중 선 두께를 얻으려면이 값을 적용하려는 특수 DataGridCell
스타일을 추가 할 수 있습니다. 이 모든 셀 스타일은 GridLines와 동일한 색상으로 왼쪽에 1px 테두리를 그립니다. 그것은 걱정할 세포에 마우스 오버 효과 나 아무것도 없다이
<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>
처럼 보일 것이다. 그러나 DataGridColumnHeader
과 유사한 작업을 수행하는 경우 분류 화살표, 마우스 오버 효과, 마우스 다운 효과 등을 잃게됩니다. 따라서 전체 템플릿을 만들어야합니다.
다음은 내가 수행 한 작업입니다.
이름 : 이것은 Meleak의 대답에 있지만 마진의 추가를 기반으로<DataGridTextColumn Header="Header Name">
<DataGridTextColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Margin" Value="1 0 0 0" />
<Setter Property="BorderThickness" Value="1 0 0 0" />
<Setter Property="BorderBrush" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}, Path=HorizontalGridLinesBrush}" />
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
는 데이터 그리드가 도끼를 할 필요성을 제거, 국경 브러시에 대한 RelativeSource를 사용하여 (이중 라인 효과를 만들 수 있습니다).