Lors de la mise à l'échelle d'un panneau à l'aide d'une transformation d'échelle, l'application doit réinitialiser le panneau à sa taille d'origine. A cet effet, un bouton de réinitialisation démarre une animation double qui anime la transformation d'échelle de sa valeur de départ à 1, ce qui signifie que le panneau aura sa valeur d'origine.DoubleAnimation/Storyboard termine deux fois et réinitialise la valeur d'animation
Visuellement, le panneau est redimensionné à la taille orignal, mais une fois l'animation terminée, l'événement complet du storyboard est déclenché deux fois, et une fois ces deux événements augmentés, la valeur de la transformée d'échelle est ramenée à la valeur avait avant l'animation.
private void ResetButton_Click(object sender, RoutedEventArgs e)
{
if (!isReseting)
{
isReseting = true;
this.doubleAnimation = new DoubleAnimation(1, new Duration(new TimeSpan(0,0,0, 1)), FillBehavior.Stop);
this.resetStoryboard = new Storyboard();
resetStoryboard.Children.Add(doubleAnimation);
Storyboard.SetTarget(doubleAnimation, zoomSliderControl);
Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath(RangeBase.ValueProperty));
resetStoryboard.RepeatBehavior = new RepeatBehavior(1);
resetStoryboard.Completed += new EventHandler(ResetStoryboardCompleted);
resetStoryboard.Begin();
}
}
private void ResetStoryboardCompleted(object sender, EventArgs e)
{
if (resetStoryboard != null)
{
//resetStoryboard.Stop(zoomSliderControl);
//resetStoryboard.Remove(zoomSliderControl);
}
resetStoryboard = null;
doubleAnimation = null;
isReseting = false;
}
Par exemple, si la valeur de la commande curseur (nommé zoomSliderControl) est de 1,5 avant l'animation, il anime de nouveau à 1 comme prévu, mais une fois l'événement terminé de resetStoryBoard a été soulevée deux fois il est réglé retour à 1.5 à nouveau. J'ai essayé de déboguer l'application, et c'est juste après que la seconde méthode ResetStoryboardCompleted a déterminé que la valeur est définie à sa valeur d'origine, donc je suppose que je n'ai pas configuré le storyboard ou l'animation correctement.