Rotate Transform animation
Bonjour à tous,
le code suivant fait une double animation sur la propriété Angle d'une RotateTransform.
Les animations sont déclenchées avec un DataTrigger sur "MyProperty" de type string.
Les animations se déroulent correctement quand MyProperty passe :
- de 1 à 2
- de 1 à 3
- de 3 à 1
- de 3 à 2
- de 2 à 1
Mais l'animation n'est pas correcte quand MyProperty passe de 2 à 3.
L'angle revient à 0 au lieu de repartir de 90.
Quelqu'un verrait-il pourquoi ?
Voici le code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
<Canvas HorizontalAlignment="Center"
VerticalAlignment="Center">
<Canvas.Style>
<Style TargetType="{x:Type Canvas}">
<Setter Property="RenderTransform">
<Setter.Value>
<RotateTransform x:Name="myRenderTransform"
Angle="0"
CenterX="40"
CenterY="40" />
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding MyProperty}"
Value="3">
<DataTrigger.EnterActions>
<BeginStoryboard Name="ThreeAnim">
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="(Canvas.RenderTransform).(RotateTransform.Angle)"
To="180"
Duration="00:00:01"
FillBehavior="HoldEnd" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<StopStoryboard BeginStoryboardName="ThreeAnim" />
</DataTrigger.ExitActions>
</DataTrigger>
<DataTrigger Binding="{Binding MyProperty}"
Value="2">
<DataTrigger.EnterActions>
<BeginStoryboard Name="TwoAnim">
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="(Canvas.RenderTransform).(RotateTransform.Angle)"
To="90"
Duration="00:00:01"
FillBehavior="HoldEnd" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<StopStoryboard BeginStoryboardName="TwoAnim" />
</DataTrigger.ExitActions>
</DataTrigger>
<DataTrigger Binding="{Binding MyProperty}"
Value="1">
<DataTrigger.EnterActions>
<BeginStoryboard Name="OneAnim">
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="(Canvas.RenderTransform).(RotateTransform.Angle)"
To="0"
Duration="00:00:01"
FillBehavior="HoldEnd" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<StopStoryboard BeginStoryboardName="OneAnim" />
</DataTrigger.ExitActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Canvas.Style>
<Ellipse Width="80"
Height="80"
Fill="LightGray" />
<Rectangle Width="40"
Height="10"
Fill="Blue"
Canvas.Top="35"
/>
</Canvas> |
Merci beaucoup pour votre aide.