J'ai une question sur les animations dans UWP. Je veux avoir un menu en bas de mon application qui, lorsqu'il est tapé sur le dessus, glisse vers le haut (montre) ou vers le bas (se cache presque entièrement). J'apprenais WPF avant et là je sais que je peux utiliser ThicknessAnimation pour déplacer la marge de mon contrôle et le faire glisser. Malheureusement, dans UWP je ne peux pas utiliser ThicknessAnimations, alors j'ai essayé de trouver un autre moyen. Je veux que cela fonctionne pour un FrameworkElement arbitraire (afin de pouvoir le réutiliser). Finalement, je suis venu avec cette solution:Éléments coulissants dans C# UWP
/// <summary>
/// Adds a vertical slide animation
/// </summary>
/// <param name="storyboard">The storyboard to add the animation to</param>
/// <param name="seconds">The time the animation will take</param>
/// <param name="offset">The distance the element will cover (nagative is up, positive is down)</param>
public static void AddVerticalSlide(this Storyboard storyboard, FrameworkElement element, float seconds, double offset)
{
var slideAnimation = new ObjectAnimationUsingKeyFrames();
for (int i = 0; i <= 100; ++i)
{
double scalar = (double)i/100;
slideAnimation.KeyFrames.Add(new DiscreteObjectKeyFrame
{
Value = new Thickness(0, scalar*offset, 0, -scalar*offset),
KeyTime = TimeSpan.FromSeconds(scalar*seconds),
});
}
//slideAnimation.Duration = TimeSpan.FromSeconds(seconds);
// Set the target and target property
Storyboard.SetTarget(slideAnimation, element);
Storyboard.SetTargetProperty(slideAnimation, "(FrameworkElement.Margin)");
// Add the animation to the storyboard
storyboard.Children.Add(slideAnimation);
}
Il fonctionne, l'air bien, mais voici la raison pour laquelle je pose cette question: Je ne sais pas s'il est bon. Mon idée est qu'il existe une meilleure façon de faire glisser des objets que de définir manuellement 100 points sur le chemin et de déplacer l'objet à chaque point en utilisant cette animation.