2017-12-04 13 views
0

스타일을 datagridcolumn 머리글 시도하지만 오른쪽 상단에 이중 테두리가 있습니다.스타일 Datagrid 머리글 테두리 문제

나는 여백을 가지고 놀려고하지만 작동하지 않는다. 나는 항상이 이중 테두리를 런타임에 가지고있다.

어떻게 피할 수 있습니까?

Double border

<Style TargetType="{x:Type DataGridRow}"> 
    <Setter Property="Background" Value="{StaticResource BrushAbbGrey255}" /> 
    <Setter Property="FontFamily" Value="ABBVoice" /> 
</Style> 

<Style TargetType="{x:Type DataGridCell}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type DataGridCell}"> 
       <Border Padding="7,5,7,4"> 
        <ContentPresenter VerticalAlignment="Center"/> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

<Style TargetType="{x:Type DataGridColumnHeader}"> 
    <Setter Property="Foreground" Value="{StaticResource BrushAbbGrey90}" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type DataGridColumnHeader}"> 
       <Grid> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="*" /> 
         <ColumnDefinition Width="Auto" /> 
        </Grid.ColumnDefinitions> 
        <Border x:Name="BackgroundBorder" 
          BorderThickness="1,1,1,1" 
          Margin="-1,0,0,0" 
          Background="{StaticResource BrushAbbGrey240}" 
          BorderBrush="{StaticResource BrushAbbGrey200}" 
          Grid.ColumnSpan="2" /> 
        <ContentPresenter Margin="8,10,7,10" VerticalAlignment="Center"/> 
        <Path x:Name="SortArrow" Visibility="Collapsed" Data="M0,0 L1,0 0.5,1 z" Stretch="Fill" 
         Grid.Column="1" Width="8" Height="6" Fill="White" Margin="0,0,8,0" 
         VerticalAlignment="Center" RenderTransformOrigin="0.5,0.4" /> 
       </Grid> 

      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

오른쪽 여백을 -1로 설정하면 행과 헤더가 달라집니다. – Frederic7391

답변

0

내 DataGrid에 RowHeaderWidth를 1로 설정하는 스타일을 추가했는데 정상적으로 작동합니다.

<Style TargetType="{x:Type DataGrid}"> 
    <Setter Property="BorderBrush" Value="{StaticResource BrushAbbGrey200}" /> 
    <Setter Property="HorizontalGridLinesBrush" Value="{StaticResource BrushAbbGrey200}" /> 
    <Setter Property="VerticalGridLinesBrush" Value="{StaticResource BrushAbbGrey200}" /> 
    <Setter Property="BorderThickness" Value="1,0" /> 
    <Setter Property="RowHeaderWidth" Value="1" /> 
</Style> 
0

봅니다 -1에 오른쪽 여백을 설정합니다 :

<Style TargetType="{x:Type DataGridColumnHeader}"> 
    <Setter Property="Foreground" Value="{StaticResource BrushAbbGrey90}" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type DataGridColumnHeader}"> 
       <Grid> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="*" /> 
         <ColumnDefinition Width="Auto" /> 
        </Grid.ColumnDefinitions> 
        <Border x:Name="BackgroundBorder" 
          BorderThickness="1,1,1,1" 
          Margin="-1,0,-1,0" 
          Background="{StaticResource BrushAbbGrey240}" 
          BorderBrush="{StaticResource BrushAbbGrey200}" 
          Grid.ColumnSpan="2" SnapsToDevicePixels="True" /> 
        <ContentPresenter Margin="8,10,7,10" VerticalAlignment="Center"/> 
        <Path x:Name="SortArrow" Visibility="Collapsed" Data="M0,0 L1,0 0.5,1 z" Stretch="Fill" 
         Grid.Column="1" Width="8" Height="6" Fill="White" Margin="0,0,8,0" 
         VerticalAlignment="Center" RenderTransformOrigin="0.5,0.4" /> 
       </Grid> 

      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

당신은 또한 Border로의 SnapsToDevicePixels 속성을 설정 할 수 있습니다.