How to: Seek a Storyboard Synchronously
.NET Framework 3.0
The following example shows how to use the SeekAlignedToLastTick method of a Storyboard to seek to any position in a storyboard animation synchronously.
Example
The following is the XAML markup for the sample.
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="SDKSample.SeekStoryboardSynchronouslyExample"> <StackPanel Margin="20" > <Rectangle Name="myRectangle" Width="10" Height="20" Fill="#AA3333FF" HorizontalAlignment="Left" > <Rectangle.Triggers> <EventTrigger RoutedEvent="Rectangle.Loaded"> <BeginStoryboard Name="myBeginStoryboard"> <Storyboard Name="myStoryboard" Duration="0:0:4"> <DoubleAnimation Storyboard.TargetName="myRectangle" Storyboard.TargetProperty="Width" Duration="0:0:4" From="10" To="500"/> </Storyboard> </BeginStoryboard> </EventTrigger> </Rectangle.Triggers> </Rectangle> <!-- Use this slider to seek to different points of the Storyboard Duration (in milliseconds). --> <Slider Name="SeekSlider" ValueChanged="OnSliderValueChanged" Height="Auto" Width="500" Minimum="0" Maximum="4000" HorizontalAlignment="Left" /> <!-- TextBlock displays the current time position of the Storyboard in milliseconds. --> <TextBlock Name="PositionTextBlock"/> </StackPanel> </Page>
The following is the code used with the XAML code above.
using System; using System.Media; using System.Windows; using System.Windows.Controls; using System.Windows.Media.Animation; namespace SDKSample { public partial class SeekStoryboardSynchronouslyExample : Page { public void OnSliderValueChanged(object sender, RoutedEventArgs e) { int sliderValue = (int)SeekSlider.Value; // The SeekAlignedToLastTick method should be used to seek a Storyboard synchronously. myStoryboard.SeekAlignedToLastTick(myRectangle, new TimeSpan(0, 0, 0, 0, sliderValue), TimeSeekOrigin.BeginTime); PositionTextBlock.Text = sliderValue.ToString(); } } }
Show: