2011-08-11 7 views
2

WPF DataGrid를 사용하고 있으며 사용자가 수정하는 행 주위에 빨간색 테두리를 배치하도록 설정했습니다. 그것은 잘 작동하지만, 경계선이 그 행 안에있는 모든 셀을 나타낼 때 픽셀 또는 2에 밀려납니다. 즉, 셀의 왼쪽 및 오른쪽 경계선이 위 또는 아래 경계선과 더 이상 일 치하지 않으므로 이상하게 보입니다. 여기 WPF DataGrid에서 테두리 여백을 설정하는 방법?

내가은 onEdit을 표시하는 빨간색 테두리를 얻기 위해 사용하고 코드입니다 (참고 : IsDirty 사용이 값이 변경됩니다 때 설정되어 내 바인딩 된 객체의 속성입니다) : 내가 추가 할 수 있습니다 무엇

<Style TargetType="DataGridRow"> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding IsDirty}" Value="true"> 
      <Setter Property="BorderBrush" Value="Red" /> 
      <Setter Property="BorderThickness" Value="1" />      
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

그래서 빨간색 테두리 여백을 수정하여 셀의 테두리를 간섭하지 않도록 할 수 있습니까?

감사

답변

2

시각적 트리이

  • DataGridR과 같이 보입니다 흐름
    • 국경
      • DataGridCellsPresenter

      당신의 BorderThickness을 변경

Border 같은 시간에 DataGridCellsPresenter에 부정적인 Margin.Left를 추가하여 보상 할 수있다. 가장 좋은 해결책은 아니지만 작동합니다.

<DataGrid ...> 
    <DataGrid.Resources> 
     <Style TargetType="DataGridCellsPresenter"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding IsDirty}" Value="true"> 
        <Setter Property="Margin" Value="-1,0,0,0" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </DataGrid.Resources> 
    <DataGrid.RowStyle> 
     <Style TargetType="DataGridRow"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding IsDirty}" Value="true"> 
        <Setter Property="BorderBrush" Value="Red" /> 
        <Setter Property="BorderThickness" Value="1" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </DataGrid.RowStyle> 
    <!--...--> 
</DataGrid> 
+0

완벽하게 작동합니다! 고마워 ... 내가 찾고 있던 바로 그거야! – Nullqwerty

3

한 가지 방법

뭔가

같은 사실 더럽 행에 대한 빨간색으로 국경을 더러운 것보다는 오히려 각 행에 테두리를 적용하지만 투명 경계를 설정하고 설정 될 수있다
<Style TargetType="DataGridRow"> 
    <Setter Property="BorderBrush" Value="Transparent" /> 
    <Setter Property="BorderThickness" Value="1" /> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding IsDirty}" Value="true"> 
      <Setter Property="BorderBrush" Value="Red" /> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 
+0

좋은 아이디어. 불행히도 행이 빨간색이 아니면 모든 셀의 경계 사이에 간격을 둡니다. 그래서 왼쪽 경계선은 줄이 그 다음에 작은 빈 공간을, 그 다음 경계선이 그 아래에 있습니다. 나는 투명한 대신에 그것을 검정으로 만들려고 노력했다. 그러나 경계가 너무나 두껍기 때문에 그것은 미쳤다. 어쨌든 고마워. – Nullqwerty

관련 문제