如何在动画完成后恢复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>
- 我试过使用"自动反转",但我真的不喜欢动画的外观
- 我在ExitActions中尝试过使用和不使用标记
- 我已尝试在ExitAction动画中设置"从"answers"到"
- 我尝试过在ExitAction动画中仅设置为5我尝试在ExitAction动画中只设置"持续时间"而不设置"到"6我在EnterActions中尝试过使用和不使用标签
- 我试着添加第三个动画,在前两个结束后开始
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。