Frage

Im Moment habe ich eine Reihe von Schaltflächen, die Ich mag würde Trigger setzen, so dass jeder die gleiche Animation auszuführen. Gibt es eine Möglichkeit in XAML auf ‚Pass‘ das Ziel auf das Storyboard, so dass ich muß für jedes Ziel des Storyboard nicht jedes Mal neu schreiben?

War es hilfreich?

Lösung

Wenn Sie kein explizites Ziel gesetzt, das Ziel sollte wird das Element, an dem die Animation angewandt wird. Ich würde einen Stil mit dem Trigger / Animation auf sie definieren und den Stil auf diese speziellen Tasten anwenden, die Sie dieses Verhalten zeigen wollen. Zum Beispiel:

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

Und dann auf jeder Taste, die Sie auf diese Weise verhalten sollen:

<Button Style="{StaticResource MyButtonStyle}" ... />
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top