我对一些应该相对直接的事感到非常沮丧。我有一个警报,每当状态发生变化时,我想为文本比例设置动画以增加其大小。这应该重复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>
答案 0 :(得分:1)
当转换器返回的值为false时,将调用ExitActions,但是想要在完成后立即删除动画。
这可以通过在故事板上将 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。