WPF Установка цели раскадровки в XAML - PullRequest
4 голосов
/ 28 октября 2009

В настоящее время у меня есть набор кнопок, которые я хотел бы установить триггеры, чтобы каждая из них выполняла одинаковую анимацию. Есть ли способ в XAML , чтобы «передать» цель в раскадровку, чтобы мне не приходилось переписывать раскадровку каждый раз для каждой цели?

1 Ответ

15 голосов
/ 29 октября 2009

Если вы не установите явную цель, цель должна быть элементом, к которому применяется анимация. Я бы определил стиль с помощью триггера / анимации и применил бы стиль к тем конкретным кнопкам, для которых вы хотите продемонстрировать это поведение. Например:

<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}" ... />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...