Use the IsCumulative property to accumulate base values of an animation across repeating cycles. For example, if you set an animation to repeat 9 times (RepeatBehavior = "9x") and you set the property to animate between 10 and 15 (From = 10 To = 15), the property animates from 10 to 15 during the first cycle, from 15 to 20 during the second cycle, from 20 to 25 during the third cycle, and so on. Hence, each animation cycle uses the ending animation value from the previous animation cycle as its base value.

<Pagexmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"><StackPanelMargin="20"><!-- This rectangle is animated with DoubleAnimation and IsCumulative set to "True". --><RectangleName="withIsCumulative"Width="100"Height="20"Margin="12,0,0,5"Fill="#AA3333FF"HorizontalAlignment="Left"/><!-- This rectangle is animated with DoubleAnimation and IsCumulative set to "False". --><RectangleName="withoutIsCumulative"Width="100"Height="20"Margin="12,0,0,5"Fill="#AA3333FF"HorizontalAlignment="Left"/><!-- This rectangle is animated with DoubleAnimationUsingKeyFrames and IsCumulative set to "True". --><RectangleName="withIsCumulativeUsingKeyFrames"Width="100"Height="20"Margin="12,0,0,5"Fill="#AA3333FF"HorizontalAlignment="Left"/><!-- This rectangle is animated with DoubleAnimationUsingKeyFrames and IsCumulative set to "False". --><RectangleName="withoutIsCumulativeUsingKeyFrames"Width="100"Height="20"Margin="12,0,0,5"Fill="#AA3333FF"HorizontalAlignment="Left"/><!-- Create a button to restart the animations. --><ButtonMargin="0,30,0,0"HorizontalAlignment="Left">
Restart Animations
<Button.Triggers><EventTriggerRoutedEvent="Button.Click"><BeginStoryboard><Storyboard><!-- DoubleAnimation with IsCumulative set to "True". Because IsCumulative is set to "True",
the base values of the animation will accumulate over repeat cycles. In this example, the
first iteration will be from 100 to 200, the second will be from 200 to 300, the third from
300 to 400, etc. --><DoubleAnimationStoryboard.TargetName="withIsCumulative"Storyboard.TargetProperty="Width"RepeatBehavior="4x"AutoReverse="True"IsCumulative="True"Duration="0:0:3"From="100"To="200"/><!-- DoubleAnimation with IsCumulative set to "False". The starting value 100 pixels and repeat
cycles do not build on earlier ones. --><DoubleAnimationStoryboard.TargetName="withoutIsCumulative"Storyboard.TargetProperty="Width"RepeatBehavior="4x"AutoReverse="True"IsCumulative="False"Duration="0:0:3"From="100"To="200"/><!-- DoubleAnimationUsingKeyFrames with IsCumulative set to "True". Similar to the DoubleAnimation
above, the base value of each cycle builds on the last one. Note that the output value
is the total output value from all the key frames for a total output of 100 pixels. --><DoubleAnimationUsingKeyFramesStoryboard.TargetName="withIsCumulativeUsingKeyFrames"Storyboard.TargetProperty="Width"RepeatBehavior="4x"AutoReverse="True"IsCumulative="True"><DoubleAnimationUsingKeyFrames.KeyFrames><LinearDoubleKeyFrameValue="100"KeyTime="0:0:0"/><LinearDoubleKeyFrameValue="130"KeyTime="0:0:1"/><SplineDoubleKeyFrameKeySpline="0.6,0.0 0.9,0.00"Value="200"KeyTime="0:0:3"/></DoubleAnimationUsingKeyFrames.KeyFrames></DoubleAnimationUsingKeyFrames><!-- DoubleAnimationUsingKeyFrames with IsCumulative set to "False". The base value of each cycle
does not build on the last one. --><DoubleAnimationUsingKeyFramesStoryboard.TargetName="withoutIsCumulativeUsingKeyFrames"Storyboard.TargetProperty="Width"RepeatBehavior="4x"AutoReverse="True"IsCumulative="False"><DoubleAnimationUsingKeyFrames.KeyFrames><LinearDoubleKeyFrameValue="100"KeyTime="0:0:0"/><LinearDoubleKeyFrameValue="130"KeyTime="0:0:1"/><SplineDoubleKeyFrameKeySpline="0.6,0.0 0.9,0.00"Value="200"KeyTime="0:0:3"/></DoubleAnimationUsingKeyFrames.KeyFrames></DoubleAnimationUsingKeyFrames></Storyboard></BeginStoryboard></EventTrigger></Button.Triggers></Button></StackPanel></Page>