Pregunta

Actualmente tengo un conjunto de botones que me gustaría establecer activadores para que cada uno realice la misma animación. ¿Hay alguna forma en XAML de 'pasar' el objetivo al guión gráfico para que no tenga que volver a escribir el guión gráfico cada vez para cada objetivo?

¿Fue útil?

Solución

Si no establece un objetivo explícito, el objetivo debería ser el elemento al que se aplica la animación. Definiría un estilo con el desencadenante / animación y aplicaría el estilo a esos botones particulares que desea exhibir este comportamiento. Por ejemplo:

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

Y luego, en cada botón, desea comportarse de esta manera:

<Button Style="{StaticResource MyButtonStyle}" ... />
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top