3

私は現在、ボタンがタップされたときに2つの異なるアニメーションを呼び出す必要があるSurfaceアプリケーションに取り組んでいます。

これをどの程度正確に行う必要がありますか?可能であれば宣言的にやりたいと思います。これにMultiTriggersを使用する必要がありますか?

前もって感謝します!

4

1 に答える 1

2

これは、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>
于 2010-03-16T13:06:13.930 に答える