2011-03-23 5 views
1

DataGridRow 트리거를 바인딩하여 항목이 중요 할 경우 배경을 빨강으로 설정하려고합니다. 그렇지 않으면 AlternatingRowBackground이 필요합니다. 그것은 잘 작동DataGridRow 배경색의 DataTrigger

<ControlTemplate.Triggers> 
    <DataTrigger Binding="{Binding IsCritical}" Value="True"> 
    <Setter Property="Background" Value="Red" /> 
    </DataTrigger> 
</ControlTemplate.Triggers> 

만이 (가) AlternatingRowBackground (나는 곳이 정상 읽어 보시기 바랍니다) 해제 : 여기에 지금까지 가지고있는 것입니다.

<Style.Triggers> 
    <Trigger Property="AlternationIndex" Value="0"> 
    <Setter Property="Background" Value="White" /> 
    </Trigger> 
    <Trigger Property="AlternationIndex" Value="1"> 
    <Setter Property="Background" Value="WhiteSmoke" /> 
    </Trigger> 
</Style.Triggers> 

를하지만 빨간색이 될 결코 (긴요 한 바인딩 트리거)를 수행하여 : 그래서 나는 그와 함께 자신을 수동으로 할 및 행의 배경을 설정합니다. 내가 MultiDataTrigger 시도하고 두 조건 (IsCritical -> 거짓 & & 대체)하지만 바인딩이 실패합니다. 나는 또한 StyleControlTemplate에 두 트리거를 넣으려고했지만 여전히 작동하지 않습니다.

아이디어가 있으십니까?

답변

2

here과 같이 스타일 트리거는 ControlTemplate 트리거보다 우선 순위가 높습니다.

할 수있는 작업은 배경 브러시를 사용하는 요소를 "대상 지정"하고 직접 설정하는 것입니다. 이것은 ControlTemplate에 이동

<ControlTemplate.Triggers> 
    <DataTrigger Binding="{Binding IsCritical}" Value="True"> 
     <Setter TargetName="border" Property="Background" Value="Red" /> 
    </DataTrigger> 
</ControlTemplate.Triggers> 

:에 다음

<Border x:Name="border" Background="{TemplateBinding Background}" ... > 

변경하려면 ControlTemplate이 DataTrigger :

<Border Background="{TemplateBinding Background}" ... > 

당신은이를 변경할 수 있습니다 그래서 당신은 아마 당신의 ControlTemplate에 다음과 같은 뭔가를 스타일 트리거에서 트리거의 설정자가 우선합니다.

+0

'DataTrigger'와'Trigger'를'ControlTemplate'에서'Style'으로 바꾸어 우선 순위를 뒤집을 수 있습니다. –

+0

@Philippe - 맞습니다. 주어진 컬렉션에서 마지막 트리거가 "승리"합니다. – CodeNaked

관련 문제