2014-09-22 27 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

好一點。儘管有兩個以上的州。 – 2014-09-22 22:39:03

+0

@ O.O在這種情況下,您需要全部或切換到使用VisualStateManager。 – 2014-09-22 22:40:45

相關問題