0

我有一个为图像宽度设置动画的情节提要。我用表情混合创建了动画:

<Storyboard x:Key="Storyboard1">
    <DoubleAnimationUsingKeyFrames 
             Storyboard.TargetProperty="(FrameworkElement.Width)" 
             Storyboard.TargetName="imageFoo">
            <EasingDoubleKeyFrame KeyTime="0:0:0.9" Value="335">
                <EasingDoubleKeyFrame.EasingFunction>
                    <BackEase EasingMode="EaseOut"/>
                </EasingDoubleKeyFrame.EasingFunction>
            </EasingDoubleKeyFrame>
    </DoubleAnimationUsingKeyFrames>
</Storyboard>

问题是我想将该故事板分配给我的应用程序中的所有图像,而不仅仅是图像imageFoo。我想在鼠标输入图像时启动该动画。我怎样才能做到这一点?

4

1 回答 1

2

您需要从情节提要中删除目标名称并将触发器移动到样式中,谢天谢地,不需要任何代码

在您的 App.xaml 文件中(或在任何资源集合中)。

 <Application.Resources>
        <Style TargetType="{x:Type Image}">
            <Style.Triggers>
                <EventTrigger RoutedEvent="MouseEnter">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Width)">
                                <EasingDoubleKeyFrame KeyTime="0:0:0.9" Value="335">
                                    <EasingDoubleKeyFrame.EasingFunction>
                                        <BackEase EasingMode="EaseOut"/>
                                    </EasingDoubleKeyFrame.EasingFunction>
                                </EasingDoubleKeyFrame>
                            </DoubleAnimationUsingKeyFrames>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Style.Triggers>
        </Style>
    </Application.Resources>

通过声明一个没有 x:Key 的样式并简单地给出一个 TargetType ,您基本上是在告诉 WPF 它应该应用于具有该类型的可视树中的每个元素。

于 2012-05-31T17:58:42.703 回答