gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:46:40 25 4
gpt4 key购买 nike

我对应该相对简单的事情感到非常沮丧。我有一个警报,每当状态发生变化时,我想为文本比例设置动画以增加尺寸。这应该重复 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. 我试过使用 Autoreverse,但我真的不喜欢动画的效果
  2. 我已经尝试过在 ExitActions 中使用和不使用标签。
  3. 我试过在 ExitAction 动画中设置 From 和 To
  4. 我已经尝试在 ExitAction 动画中设置为5 我试过在 ExitAction 动画中只设置 Duration 而没有 To6 我试过在 EnterActions 中使用和不使用标签
  5. 我尝试添加第三个动画,在前两个动画结束后开始

最佳答案

当从转换器返回的值为 false 但您想在完成动画后立即删除动画时,将调用 ExitActions。

这可以通过设置 FillBehavior来实现Stop 在 Storyboard 上,这意味着您不希望动画在其事件期结束后保持其值。

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

关于c# - 如何在动画完成后恢复 DataTrigger ExitActions 中的初始值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25876159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com