2014-09-22 2 views
1

단일 트리거로 줄일 수 있습니까?다중 트리거를 하나로 리 팩터

<Style x:Key="StatusTextBlock" TargetType="{x:Type TextBlock}"> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding Path=Text, 
      RelativeSource={RelativeSource Self}}" Value="Running"> 
      <Setter Property="Foreground" Value="Green"></Setter> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding Path=Text, 
      RelativeSource={RelativeSource Self}}" Value="Paused"> 
      <Setter Property="Foreground" Value="Yellow"></Setter> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding Path=Text, 
      RelativeSource={RelativeSource Self}}" Value="Stopped"> 
      <Setter Property="Foreground" Value="Red"></Setter> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

답변

0

"Running""Stopped"는 두 개의 가능한 경우가 있다면, 당신은 속성으로 하나 설정하고, 하나의 트리거를 사용할 수 있습니다

<Style x:Key="StatusTextBlock" TargetType="{x:Type TextBlock}"> 
    <Setter Property="Foreground" Value="Green" /> <!--default case == Running --> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding Path=Text, 
      RelativeSource={RelativeSource Self}}" Value="Stopped"> 
      <Setter Property="Foreground" Value="Red"></Setter> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 
+0

좋은 점을. 두 개 이상의 상태가 있습니다. –

+0

@ O.O 그런 경우에는 모두 필요하거나 VisualStateManager를 사용하도록 전환해야합니다. –