문제

현재 트리거를 설정하려는 버튼 세트가있어 각 버튼이 동일한 애니메이션을 수행 할 수 있습니다. 방법이 있습니까? XAML에서 각 대상에 대해 매번 스토리 보드를 다시 작성할 필요가 없도록 스토리 보드로 대상을 '전달'하려면?

도움이 되었습니까?

해결책

명시적인 목표를 설정하지 않으면 목표 ~해야 한다 애니메이션이 적용되는 요소입니다. 트리거/애니메이션으로 스타일을 정의 하고이 동작을 보여 주려는 특정 버튼에 스타일을 적용합니다. 예를 들어:

<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}" ... />
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top