【问题标题】:WPF XAML How can I conditionally perform this animation?WPF XAML 如何有条件地执行此动画?
【发布时间】:2013-11-15 16:22:35
【问题描述】:

如何根据bool CanAnimate 有条件地运行此动画?它现在可以工作,但我并不总是希望它是动画的,我想检查布尔值。

<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>

【问题讨论】:

    标签: c# wpf xaml animation conditional


    【解决方案1】:

    在边框和内部样式上应用样式,您可以检查 bool 属性的值。根据该属性,您可以在从 storyBoard 中删除 TargetName 后使用 storyboard 指定 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>
    

    【讨论】:

    • 嗯,当我的布尔值变为假时,我如何停止动画?它似乎只是永远动画而无需再次检查布尔值。布尔值在 SelectedItem 设置器中设置...
    • 谢谢,我想出了如何使用 ExitActions 和 StopStoryBoard 来阻止它
    • 是的,您可以使用ExitActions。 :)
    猜你喜欢
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    • 2012-04-19
    相关资源
    最近更新 更多