【问题标题】:WPF Setting Storyboard target in XAMLWPF 在 XAML 中设置情节提要目标
【发布时间】:2010-12-11 00:37:27
【问题描述】:

我目前有一组按钮,我想设置触发器,以便每个按钮执行相同的动画。有没有办法在 XAML 中将目标“传递”到情节提要,这样我就不必每次都为每个目标重写情节提要?

【问题讨论】:

    标签: .net wpf xaml animation storyboard


    【解决方案1】:

    如果您没有设置明确的目标,则目标应该是应用动画的元素。我会定义一个带有触发器/动画的样式,并将该样式应用于您想要展示此行为的那些特定按钮。例如:

    <Style x:Key="MyButtonStyle" TargetType="{x:Type Button}">
        <Style.Resources>
            <Storyboard x:Key="OnMouseEnterStoryboard">
                <DoubleAnimation BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)" To="180" />
            </Storyboard>
            <Storyboard x:Key="OnMouseLeaveStoryboard">
                <DoubleAnimation BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)" To="0" />
            </Storyboard>
        </Style.Resources>
        <Style.Triggers>
            <EventTrigger RoutedEvent="Mouse.MouseLeave">
                <RemoveStoryboard BeginStoryboardName="OnMouseEnterStoryboard_BeginStoryboard"/>
                <BeginStoryboard x:Name="OnMouseLeaveStoryboard_BeginStoryboard" Storyboard="{StaticResource OnMouseLeaveStoryboard}"/>
            </EventTrigger>
            <EventTrigger RoutedEvent="Mouse.MouseEnter">
                <BeginStoryboard x:Name="OnMouseEnterStoryboard_BeginStoryboard" Storyboard="{StaticResource OnMouseEnterStoryboard}"/>
                <RemoveStoryboard BeginStoryboardName="OnMouseLeaveStoryboard_BeginStoryboard"/>
            </EventTrigger>
        </Style.Triggers>
        <Setter Property="RenderTransformOrigin" Value="0.5,0.5"/>
        <Setter Property="RenderTransform">
            <Setter.Value>
                <RotateTransform/>
            </Setter.Value>
        </Setter>
    </Style>
    

    然后在每个按钮上你想这样操作:

    <Button Style="{StaticResource MyButtonStyle}" ... />
    

    【讨论】:

    • 太棒了!我刚刚开始学习 WPF,并没有想到应用具有相关触发器和动画的样式。感谢您的帮助!
    猜你喜欢
    • 2021-05-24
    • 2011-01-11
    • 1970-01-01
    • 2011-01-16
    • 2014-01-19
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多