我有以下带有动画的TextBlock
<TextBlock Text="{Binding StatusMessage}"
Margin="5,0,0,0"
Foreground="White">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding IsSystemReady,
NotifyOnSourceUpdated=True,
Mode=OneWay}"
Value="False">
<DataTrigger.EnterActions>
<BeginStoryboard Name="FadeOut">
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity"
From="1.0"
To="0.0"
Duration="0:0:3.5"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
<DataTrigger Binding="{Binding IsSystemReady,
NotifyOnSourceUpdated=True,
Mode=OneWay}"
Value="True">
<DataTrigger.EnterActions>
<StopStoryboard BeginStoryboardName="FadeOut" />
</DataTrigger.EnterActions>
<Setter Property="Opacity" Value="1.0"/>
</DataTrigger>
<Trigger Property="Opacity" Value="0.0">
<Setter Property="Text" Value="Ready"/>
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
动画有效,但是完成时(即控件的“不透明度”为0.0),我想在状态消息已显示并优雅消失后自动返回到就绪状态。我正在尝试使用标准的
Trigger
来执行此操作,但这并未触发,为什么以及如何解决此问题? 谢谢你的时间。
最佳答案
Trigger
不会触发,因为Opacity
属性仍被动画锁定,但是如果要使用Text
,则可以使用动画来更改ObjectAnimation
值。
例子:
<BeginStoryboard Name="FadeOut">
<Storyboard >
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="1.0" To="0.0" Duration="0:0:3.5"/>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Text" BeginTime="0:0:3.5" >
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Ready" />
</ObjectAnimationUsingKeyFrames>
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="1.0" To="1.0" BeginTime="0:0:3.5"/>
</Storyboard>
</BeginStoryboard>
但是,在“动画”中将
Text
设置为Ready
不会将StatusMessage
属性设置为Ready
。关于c# - 带动画的多重触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18346446/