2011-04-23 3 views
2

컬렉션에 바인딩 된 DataGrid가 있습니다. multidatatrigger을배경에 대한 DataGridRow MultiDataTrigger : IsSelected 조건이 작동하지 않습니다.

<DataGrid.RowStyle> 
    <Style TargetType="DataGridRow"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding Status}" Value="Down"> 
       <Setter Property="Background" Value="Red" /> 
       <Setter Property="Foreground" Value="White" /> 
      </DataTrigger> 
      <MultiDataTrigger> 
       <MultiDataTrigger.Conditions> 
        <Condition Binding="{Binding Status}" Value="Down" /> 
        <Condition Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=IsSelected}" Value="True" /> 
       </MultiDataTrigger.Conditions> 
       <Setter Property="Background" Value="Green" /> 
       <Setter Property="Foreground" Value="White" /> 
      </MultiDataTrigger> 
     </Style.Triggers> 
    </Style> 
</DataGrid.RowStyle> 

datatrigger이 작동하고 있지만 : 나는 데이터 그리드에 다음 rowstyle을 적용했습니다. 실패한 조건은 true 인 DataGridrow에서 IsSelected를 확인하는 조건입니다. 값을 변경하면 항상 true를 반환하는 valueconverter가 사용되어 행이 녹색으로 표시됩니다.

기본적으로 상태 속성이 빨간색으로 설정되어있는 데이터 객체가있는 행을 원하지만 해당 행을 선택하면 기본 파란색 대신 녹색 (또는 실제로 어둡게)해야합니다.

답변

4

귀하의 바인딩은 완벽하게 완벽하게 좋습니다. 그러나 DataGrid는 SystemColors.HighlightBrush 및 SystemColors.HighlightTextBrush를 사용하여 선택한 행을 강조 표시합니다. 선택한 행의 색상을 변경하려면 당신은이처럼 데이터 그리드의 브러시를 무시할 수 있습니다 : 당신이 당신의 트리거가 설정 한 배경색을 볼 수 있어야합니다

<DataGrid.Resources> 
     <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/> 
    </DataGrid.Resources> 

이 방법을.

희망이 도움이됩니다.

+0

현재시에서. 이 기능이 작동하는지 확인하면 답변으로 표시됩니다. 그리고 감사합니다! – rhyek

+0

대단히 환영합니다. 효과가 있는지 알 수 없습니다. 하지만 그것은 나를 위해 않습니다. 그냥 시도해라. 행운을 빌어! – harri

0

DataGrid.RowStyle이 아니라 DataGrid.CellStyle을 수정해야합니다. 마지막 하나는 선택되지 않은 행에 대한 것입니다.

관련 문제