如何在动画完成后恢复DataTrigger ExitActions中的初始值

本文关键字:ExitActions DataTrigger 恢复 动画 | 更新日期: 2023-09-27 18:22:02

我对一些应该相对直截了当的事情感到非常沮丧。我有一个警报,每当状态发生变化时,我都想设置文本比例的动画以增加大小。此操作应重复3次,然后停止将文本保留为原始值。

我看过我能找到的每一个例子,并尝试了几种不同的实现,但没有任何效果。动画停止后,文本变大。为什么我的DataTrigger.ExitActions中似乎没有任何内容正在启动?

<TextBlock Grid.Column="1" Grid.Row="0" FontSize="22" Text="{Binding Path=DisplayName, IsAsync=True}" Padding="2,0,2,0">
    <TextBlock.RenderTransform> 
        <ScaleTransform x:Name="scale" /> 
    </TextBlock.RenderTransform>
<TextBlock.Style>
    <Style TargetType="{x:Type TextBlock}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding Value, Converter={StaticResource AlarmConverter}, IsAsync=True}" Value="true">
                <DataTrigger.EnterActions>
                    <RemoveStoryboard BeginStoryboardName="NewAlarm" />                                                     
                        <BeginStoryboard Name="NewAlarm">
                            <Storyboard RepeatBehavior="3x" >
                                <DoubleAnimation  Storyboard.TargetProperty="RenderTransform.ScaleX"
                                                  Duration="00:00:02" 
                                                  From="1"
                                                  To="1.5"  />
                                 <DoubleAnimation  
                                                   Storyboard.TargetProperty="RenderTransform.ScaleY"
                                                   Duration="00:00:02"
                                                   From="1" To="1.5"  />
                            </Storyboard>
                        </BeginStoryboard>
                    </DataTrigger.EnterActions>
                    <DataTrigger.ExitActions>
                        <RemoveStoryboard  BeginStoryboardName="NewAlarm" />
                            <BeginStoryboard>
                                <Storyboard>
                                    <DoubleAnimation  
                                  Storyboard.TargetProperty="RenderTransform.ScaleX"
                                    Duration="00:00:01" />
                                     <DoubleAnimation  
                                  Storyboard.TargetProperty="RenderTransform.ScaleY"
                                  Duration="00:00:01" />
                                </Storyboard>
                             </BeginStoryboard>
                          </DataTrigger.ExitActions>
                       </DataTrigger>
                    </Style.Triggers>
                </Style>
           </TextBlock.Style>
       </TextBlock>
  1. 我试过使用"自动反转",但我真的不喜欢动画的外观
  2. 我在ExitActions中尝试过使用和不使用标记
  3. 我已尝试在ExitAction动画中设置"从"answers"到"
  4. 我尝试过在ExitAction动画中仅设置为5我尝试在ExitAction动画中只设置"持续时间"而不设置"到"6我在EnterActions中尝试过使用和不使用标签
  5. 我试着添加第三个动画,在前两个结束后开始

如何在动画完成后恢复DataTrigger ExitActions中的初始值

ExitActions在转换器返回的值为false时被调用,但您希望在完成动画后立即删除它。

这可以通过在情节提要上将FillBehavior设置为Stop来实现,这意味着您不希望动画在其活动期结束后保持其值。

<Storyboard FillBehavior="Stop" RepeatBehavior="3x" >
    <DoubleAnimation  
        Storyboard.TargetProperty="RenderTransform.ScaleX"
        Duration="00:00:02" 
        From="1"
        To="1.5"  />
    <DoubleAnimation  
        Storyboard.TargetProperty="RenderTransform.ScaleY"
        Duration="00:00:02"
        From="1" To="1.5"  />
</Storyboard>

有了这一点,如果不需要,您可以取消ExitActions。