在另一个Storyboard时间轴中启动Storyboard

Sco*_*ttN 4 wpf animation storyboard

我有一个故事板(1),它在2秒内完成一些基本的动画.我希望故事板(1)能够完成我设置的所有属性动画(这一切都很好).但是在故事板的3秒钟(1)我想开始故事板(2)并退出故事板(1)而根本没有用户交互.

我见过的唯一让我这样做的是当用户点击某些东西时.我希望这是基于当前故事板(1)时间轴的位置自动完成的.

我希望这足够了.如果您需要我更详细地解释一下,请告诉我.

谢谢.

编辑:请以XAML或VB.net语言发布答案.:)

Enr*_*lio 6

通常,为了在时间线期间控制动画,您将使用"关键帧".关键帧动画允许您为在特定时间设置动画的属性定义特定值.在WPF中,每个动画都有相应的关键帧动画,比如'DoubleAnimation'有'DoubleAnimationUsingKeyFrames'.

我不认为可以从动画中开始新的故事板.但是,您可以通过将故事板放在同一时间轴上并根据故事板(1)的持续时间以特定延迟启动故事板(2)来实现相同的结果.就像是:

<StackPanel>
    <Rectangle Name="recProgressBar"
               Fill="Orange"
               Width="1"
               Height="25"
               Margin="20"
               HorizontalAlignment="Left" />
    <Button Content="Start Animation"
            Width="150"
            Height="25">
        <Button.Triggers>
            <EventTrigger RoutedEvent="Button.Click">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetName="recProgressBar"
                                         Storyboard.TargetProperty="Width"
                                         From="0"
                                         To="250"
                                         Duration="0:0:2" />
                        <Storyboard BeginTime="0:0:3">
                            <ColorAnimation Storyboard.TargetName="recProgressBar"
                                            Storyboard.TargetProperty="Fill.Color"
                                            To="DarkGreen"
                                            Duration="0:0:1" />
                        </Storyboard>
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Button.Triggers>
    </Button>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

这里的颜色动画将在宽度动画完成后1秒开始.值得一试.