L'UWP Community Toolkit mette a disposizione una serie di controlli e helper che ci consentono di snellire e semplificare la scrittura delle nostre applicazioni. Nello script di questa settimana vediamo come sia semplice introdurre il concetto di loop delle animazioni, cosa che attualmente non è supportata direttamente.
Supponiamo quindi di avere una Grid di nome MyGrid e di voler animare tutti i suoi figli. Possiamo raggiungere questo risultato con uno snippet di codice di questo tipo:
private void Animate() { foreach (var children in MyGrid.Children) { var lastElement = MyGrid.Children.IndexOf(children) == (MyGrid.Children.Count - 1); var animation = children.Scale(1.25f, 1.25f, 0.5f, 0.5f, 1000, 0).Then() .Scale(1, 1, 0.5f, 0.5f, 1000, 0); if (lastElement && ContinueAnimate) animation.Completed += Animation_Completed; animation.Start(); } } private void Animation_Completed(object sender, EventArgs e) { var animationSender = (sender as AnimationSet); animationSender.Completed -= Animation_Completed; Animate(); }
Nel nostro script, tramite il metodo Scale ingrandiamo il nostro UIElement di un 25% e, successivamente, concateniamo alla fine di questa prima animazione uno shrink che riporta le dimensioni a quelle precedenti. Il trucco per gestire il loop è quello di capire quando il figlio che stiamo animando è l'ultimo della collection e associargli un metodo che richiama ricorsivamente il metodo di partenza, nel nostro caso Animate.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Graceful shutdown di un hosted service di ASP.NET Core
Serializzare un enum come stringa con System.Text.Json
Impostare un promemoria per ruotare le chiavi di Azure Storage
Compilare automaticamente applicazioni .NET 6 con le pipeline di Azure DevOps e GitHub Action
Effettuare un loop di una GitHub Action
Usare l'option pattern per gestire la configurazione in ASP.NET Core
Code generator con C#
.NET per sviluppatori AWS
Retry automatico di un task di una pipeline di Azure DevOps
Creare l'effetto floating label per gli input con Bootstrap 5
Recuperare i dispositivi connessi in tethering con la Universal Windows Platform
Comprimere le immagini contenute in un repository con una GitHub Action