2013-11-04 42 views
0

我如何有條件地讓這個動畫運行,取決於bool CanAnimate?它現在工作,但我並不總是希望它是動畫,我想檢查布爾值。WPF XAML如何有條件地執行此動畫?

<Border BorderBrush="Black" BorderThickness="2" Margin="1" Name="ReviewNote"> 
    <Border.Triggers> 
     <EventTrigger RoutedEvent="Border.Loaded"> 
     <BeginStoryboard> 
      <Storyboard> 
       <DoubleAnimation 
        Storyboard.TargetName="ReviewNote" 
        Storyboard.TargetProperty="(Border.Opacity)" 
        From="1.0" To="0.0" AutoReverse="True" RepeatBehavior="Forever" /> 
      </Storyboard> 
     </BeginStoryboard> 
     </EventTrigger> 
    </Border.Triggers> 
    <TextBlock Text="{x:Static Constants:StringConstants.ReviewNote}" 
       Background="{StaticResource ReviewNoteColor}" Width="100" 
       TextAlignment="Center" /> 
</Border> 

回答

2

將樣式應用於邊框和內部樣式,您可以檢查bool屬性的值。基於該屬性,您可以在從storyBoard中刪除TargetName後指定DataTrigger.EnterActions與故事板。

這將工作 -

<Border BorderBrush="Black" BorderThickness="2" Margin="1" Name="ReviewNote"> 
    <Border.Style> 
     <Style TargetType="Border"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding CanAnimate}" Value="True"> 
        <DataTrigger.EnterActions> 
         <BeginStoryboard> 
          <Storyboard> 
           <DoubleAnimation 
            Storyboard.TargetProperty="(Border.Opacity)" 
            From="1.0" To="0.0" AutoReverse="True" 
            RepeatBehavior="Forever" /> 
          </Storyboard> 
         </BeginStoryboard> 
        </DataTrigger.EnterActions> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Border.Style> 
    <TextBlock/> 
</Border> 
+0

嗯我如何停止動畫時,我的布爾爲假?它似乎永遠不會再次檢查布爾值而永遠生成動畫。這個布爾值是在SelectedItem setter裏面設置的... –

+1

謝謝,我想出瞭如何使用ExitActions和StopStoryBoard來阻止它。 –

+1

是的,你可以使用'ExitActions'。 :) –