2013-12-18 11 views
1

이 컨트롤에 일반적으로 정의 된 스타일이 있으므로 이제 주어진 컨트롤의 스타일을 정의 할 수 있습니다.트리거에서 설정되지 않은 스타일

나는 DataTrigger를 가지고 있는데, 조건에 맞으면 컨트롤에 정의 된 스타일을 해제하고 정의한 일반 스타일로 돌아갑니다.

필자는 예제 코드에서와 같이 하드 코드 된 값을 설정하지 않고 일반 스타일로 되돌아갑니다.

제안 방법 여기

내 코드 샘플 :

    <DataGrid.Style> 
        <Style TargetType="DataGridRow"> 
         <Setter Property="Foreground" Value="Gray"/> 
         <Setter Property="FontWeight" Value="Light"/> 
         <Setter Property="FontStyle" Value="Italic" /> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding VoidedOn}" Value="{x:Null}"> 

            <Setter Property="Foreground" Value="?"/> 
           <Setter Property="FontWeight" Value="?"/> 
           <Setter Property="FontStyle" Value="?" /> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </DataGrid.Style> 

어떤 제안이 어떻게 할? 감사합니다.

답변

0

불행히도 xaml에는 ClearValue이 없습니다. 물론 이러한 속성에 대해 ClearValue를 호출하는 경우에 대해 연결된 동작을 만들 수도 있지만이 작업은 거의 필요하지 않습니다.

가장 쉬운 방법은 FontStyle에 2 개의 리소스를 만들어 올바른 설정자에서 사용하는 것입니다.

<FontStyle x:Key="voidedOnStyle">Italic</FontStyle> 
<FontStyle x:Key="normalStyle">Normal</FontStyle> 

<Setter Property="FontStyle" Value="{StaticResource voidedOnStyle}" /> 
<Style.Triggers> 
    <DataTrigger Binding="{Binding VoidedOn}" Value="{x:Null}"> 
     <Setter Property="FontStyle" Value="{StaticResource normalStyle}" /> 
    </DataTrigger> 
</Style.Triggers> 
+0

내 문제를 돕기 위해 시간을내어 주셔서 감사합니다. 그러나 도움이되지 않습니다. 질문에 글을 쓸 때 기본 상태의 하드 코드 된 값을 가져 오지 않기 때문입니다. 어쨌든 고마워요 – IFink

+0

어딘가에 값을 가져와야합니다. 뷰 모델에서 비아 바인딩이 큰 차이가 없다면 StaticResource를 적절한 바인딩으로 바꿉니다. – dowhilefor

관련 문제