私は現在、ボタンがタップされたときに2つの異なるアニメーションを呼び出す必要があるSurfaceアプリケーションに取り組んでいます。
これをどの程度正確に行う必要がありますか?可能であれば宣言的にやりたいと思います。これにMultiTriggersを使用する必要がありますか?
前もって感謝します!
私は現在、ボタンがタップされたときに2つの異なるアニメーションを呼び出す必要があるSurfaceアプリケーションに取り組んでいます。
これをどの程度正確に行う必要がありますか?可能であれば宣言的にやりたいと思います。これにMultiTriggersを使用する必要がありますか?
前もって感謝します!
これは、EventTriggerを使用して行うことができます。
ボタンとアニメーションターゲットの両方の任意のコンテナのFrameworkElement.Triggersプロパティでトリガーを定義できます。
<StackPanel
Orientation="Horizontal">
<StackPanel.Triggers>
<EventTrigger
SourceName="TheButton"
RoutedEvent="Button.Click">
<BeginStoryboard>
<Storyboard>
<ColorAnimation
Storyboard.TargetName="LimeRect"
Storyboard.TargetProperty="Fill.Color"
To="Red" />
<ColorAnimation
Storyboard.TargetName="RedRect"
Storyboard.TargetProperty="Fill.Color"
To="Lime" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</StackPanel.Triggers>
<Button
x:Name="TheButton"
Content="Play" />
<Rectangle
x:Name="LimeRect"
Fill="Lime"
Width="50"
Height="50" />
<Rectangle
x:Name="RedRect"
Fill="Red"
Width="50"
Height="50" />
</StackPanel>
ターゲットへの相対パスがある場合は、のStoryboard.Target="{Binding PathToTarget}"
代わりに使用できますStoryboard.TargetName="TargetName"
。
編集:(コメントを参照)
ボタン自体をアニメーション化する場合は、トリガーをボタンに直接配置でき、ターゲット名は必要ありません。
例-ToggleButtonのサイズをアニメーション化する:
<ToggleButton
Content="Toggle"
Width="50"
Height="50">
<ToggleButton.Triggers>
<EventTrigger
RoutedEvent="ToggleButton.Checked">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Duration="00:00:00.2"
Storyboard.TargetProperty="Width"
To="100" />
<DoubleAnimation
Duration="00:00:00.2"
Storyboard.TargetProperty="Height"
To="100" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger
RoutedEvent="ToggleButton.Unchecked">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Duration="00:00:00.2"
Storyboard.TargetProperty="Width"
To="50" />
<DoubleAnimation
Duration="00:00:00.2"
Storyboard.TargetProperty="Height"
To="50" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</ToggleButton.Triggers>
</ToggleButton>