How to: Repeat an Animation
This example shows how to use the RepeatBehavior property of a Timeline in order to control the repeat behavior of an animation.
The RepeatBehavior property of a Timeline controls how many times an animation repeats its simple duration. By using RepeatBehavior, you can specify that a Timeline repeats for a certain number of times (an iteration count) or for a specified time period. In either case, the animation goes through as many beginning-to-end runs that it needs in order to fill the requested count or duration.
By default, timelines have a repeat count of 1.0, which means they play one time and do not repeat. However, if you set the RepeatBehavior property of a Timeline to Forever, the timeline repeats indefinitely.
The following example shows how to use the RepeatBehavior property to control the repeat behavior of an animation. The example animates the Width property of five rectangles with each rectangle using a different type of repeat behavior.
<!-- RepeatBehaviorExample.xaml This example shows how to use the RepeatBehavior property to make a timeline repeat. --> <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" WindowTitle="RepeatBehavior Example"> <Border HorizontalAlignment="Stretch"> <StackPanel Margin="20"> <!-- Create several rectangles to animate. --> <Rectangle Name="ForeverRepeatingRectangle" Fill="Orange" Width="50" Height="20" /> <Rectangle Name="FourSecondsRepeatingRectangle" Fill="Orange" Width="50" Height="20" /> <Rectangle Name="TwiceRepeatingRectangle" Fill="Orange" Width="50" Height="20" /> <Rectangle Name="HalfRepeatingRectangle" Fill="Orange" Width="50" Height="20" /> <Rectangle Name="OneSecondRepeatingRectangle" Fill="Orange" Width="50" Height="20" /> <!-- Create buttons to restart and stop the animations. --> <StackPanel Orientation="Horizontal" Margin="0,20,0,0"> <Button Name="restartButton">Start Animations</Button> <Button Name="stopButton" Background="#669900FF">Stop</Button> <StackPanel.Triggers> <EventTrigger SourceName="restartButton" RoutedEvent="Button.Click"> <BeginStoryboard Name="myBeginStoryboard"> <Storyboard> <!-- Create an animation that repeats indefinitely. --> <DoubleAnimation Storyboard.TargetName="ForeverRepeatingRectangle" Storyboard.TargetProperty="Width" From="50" To="300" Duration="0:0:2" RepeatBehavior="Forever" /> <!-- Create an animation that repeats for four seconds. As a result, the animation repeats twice. --> <DoubleAnimation Storyboard.TargetName="FourSecondsRepeatingRectangle" Storyboard.TargetProperty="Width" From="50" To="300" Duration="0:0:2" RepeatBehavior="0:0:4" /> <!-- Create an animation that repeats twice. --> <DoubleAnimation Storyboard.TargetName="TwiceRepeatingRectangle" Storyboard.TargetProperty="Width" From="50" To="300" Duration="0:0:2" RepeatBehavior="2x" /> <!-- Create an animation that repeats 0.5 times. The resulting animation plays for one second, half of its Duration. It animates from 50 to 150. --> <DoubleAnimation Storyboard.TargetName="HalfRepeatingRectangle" Storyboard.TargetProperty="Width" From="50" To="300" Duration="0:0:2" RepeatBehavior="0.5x" /> <!-- Create an animation that repeats for one second. The resulting animation plays for one second, half of its Duration. It animates from 50 to 150. --> <DoubleAnimation Storyboard.TargetName="OneSecondRepeatingRectangle" Storyboard.TargetProperty="Width" From="50" To="300" Duration="0:0:2" RepeatBehavior="0:0:1" /> </Storyboard> </BeginStoryboard> </EventTrigger> <EventTrigger SourceName="stopButton" RoutedEvent="Button.Click"> <StopStoryboard BeginStoryboardName="myBeginStoryboard" /> </EventTrigger> </StackPanel.Triggers> </StackPanel> </StackPanel> </Border> </Page>
For the complete sample, see Animation Timing Behavior Sample.