我有以下带有动画的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/

10-17 01:15