C# 将情节提要放置在样式或数据模板中

C# 将情节提要放置在样式或数据模板中,c#,wpf,animation,styles,storyboard,C#,Wpf,Animation,Styles,Storyboard,我有一个故事板,动画图像的宽度。我使用expression blend创建了动画: <Storyboard x:Key="Storyboard1"> <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Width)" Storyboard.TargetName="imageFoo"> &

我有一个故事板,动画图像的宽度。我使用expression blend创建了动画:

<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。我想在鼠标输入图像时启动动画。我该怎么做呢?

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

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


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

 <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>