Clocks and Control

When launching an animation from code, we've had only a limited amount of control over the progress of the animation. We may have defined the sequence and structure of events we require in great detail, but then we just kicked them off by calling BeginAnimation, leaving the animation system to deal with them. To gain more control, we have two options. Either we can use the control features offered by storyboards, or we can work with a timeline's clock.

Controlling Animations with Storyboards

We've already seen how to exercise a little control by using event triggers. These offer actions to pause, stop, or resume an animation, or even to seek to a particular location within an animation. Example 16-7 showed how to use these. One limitation with triggers is that they always run the same storyboard. Sometimes it can be useful to write code that decides which storyboard to use at runtime. This means controlling the storyboards from code.

Trigger actions rely on control features offered by storyboards, so if you wish to control animations from code rather than with triggers, you can use these same services. The Storyboard class provides a set of methods for controlling the execution of the animations it contains: Begin, Pause, Remove, Resume, Seek, SeekAlignedToLastTick, SetSpeedRatio, SkipToFill, and Stop.

The majority of these correspond directly to the trigger action types listed in Table 16-2, with two exceptions. There is no counterpart to the SoundPlayerAction, because ...

Get Programming WPF, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.