方法 : 開始後のストーリーボードをイベント トリガを使用して制御する
更新 : 2007 年 11 月
この例では、Storyboard が開始した後でそれを制御する方法を示します。XAML を使用して Storyboard を開始するには、BeginStoryboard を使用します。これにより、アニメーション化されるオブジェクトとプロパティにアニメーションが配布され、ストーリーボードが開始されます。BeginStoryboard は、Name プロパティを指定することによって名前を設定すると、制御可能なストーリーボードになります。ストーリーボードは、開始されると対話的に制御できます。
ストーリーボードを制御するには、以下のストーリーボード アクションを EventTrigger オブジェクトと共に使用します。
PauseStoryboard: ストーリーボードを一時停止します。
ResumeStoryboard: 一時停止されたストーリーボードを再開します。
SetStoryboardSpeedRatio: ストーリーボードの速度を変更します。
SkipStoryboardToFill: ストーリーボードがある場合は、それを区間の最後に進めます。
StopStoryboard: ストーリーボードを停止します。
RemoveStoryboard: ストーリーボードを削除して、リソースを解放します。
使用例
次の例では、制御可能なストーリーボード アクションを使用して、ストーリーボードを対話的に制御しています。
メモ : コードを使用してストーリーボードを制御する例については、「方法 : ストーリーボードを開始後に制御する」を参照してください。
<Page xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
WindowTitle="Controlling a Storyboard" >
<StackPanel Margin="20" >
<!-- This rectangle is animated. -->
<Rectangle Name="myRectangle"
Width="100" Height="20" Margin="12,0,0,5" Fill="#AA3333FF" HorizontalAlignment="Left" />
<!-- This StackPanel contains all the Buttons. -->
<StackPanel Orientation="Horizontal" Margin="0,30,0,0">
<Button Name="BeginButton">Begin</Button>
<Button Name="PauseButton">Pause</Button>
<Button Name="ResumeButton">Resume</Button>
<Button Name="SeekButton">Seek</Button>
<Button Name="SkipToFillButton">Skip To Fill</Button>
<Button Name="SetSpeedRatioButton">Triple Speed</Button>
<Button Name="StopButton">Stop</Button>
<StackPanel.Triggers>
<!-- Begin the Storyboard -->
<EventTrigger RoutedEvent="Button.Click" SourceName="BeginButton">
<BeginStoryboard Name="MyBeginStoryboard">
<Storyboard >
<DoubleAnimation
Storyboard.TargetName="myRectangle"
Storyboard.TargetProperty="Width"
Duration="0:0:5" From="100" To="500" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<!-- Pause the Storyboard -->
<EventTrigger RoutedEvent="Button.Click" SourceName="PauseButton">
<PauseStoryboard BeginStoryboardName="MyBeginStoryboard" />
</EventTrigger>
<!-- Resume the Storyboard -->
<EventTrigger RoutedEvent="Button.Click" SourceName="ResumeButton">
<ResumeStoryboard BeginStoryboardName="MyBeginStoryboard" />
</EventTrigger>
<!-- Seek one second into the storyboard's active period. -->
<EventTrigger RoutedEvent="Button.Click" SourceName="SeekButton">
<SeekStoryboard
BeginStoryboardName="MyBeginStoryboard"
Offset="0:0:1" Origin="BeginTime" />
</EventTrigger>
<!-- Skip to Fill -->
<EventTrigger RoutedEvent="Button.Click" SourceName="SkipToFillButton">
<SkipStoryboardToFill BeginStoryboardName="MyBeginStoryboard" />
</EventTrigger>
<!-- Stop the Storyboard -->
<EventTrigger RoutedEvent="Button.Click" SourceName="StopButton">
<StopStoryboard BeginStoryboardName="MyBeginStoryboard" />
</EventTrigger>
<!-- Triple the speed of the Storyboard -->
<EventTrigger RoutedEvent="Button.Click" SourceName="SetSpeedRatioButton">
<SetStoryboardSpeedRatio SpeedRatio="3" BeginStoryboardName="MyBeginStoryboard" />
</EventTrigger>
</StackPanel.Triggers>
</StackPanel>
</StackPanel>
</Page>
その他の例については、「アニメーション サンプル ギャラリー」を参照してください。