Continuiamo la serie sulle notifiche toast per parlare di un paio di interazioni aggiuntive che è possibile sperimentare.
Il primo punto riguarda la gestione dei download: sono spesso lunghi (soprattutto con connessioni lente o con file di grandi dimensioni), ci possono essere contenuti multipli (più canzoni di un album), il download può interrompersi o riprendere in base al network e, soprattutto, non è detto che l'utente tenga sempre l'applicazione aperta per vedere lo stato e il progresso del download.
A partire da Windows 10 Creators Update, le notifiche vengono in aiuto anche in questo caso, in cui è possibile mostrare lo stato di avanzamento direttamente nel centro notifiche:
ToastContent toastContent = new ToastContent() { Visual = new ToastVisual() { BindingGeneric = new ToastBindingGeneric() { Children = { new AdaptiveText() { Text = "Download contenuto in corso..." }, new AdaptiveProgressBar() { Value = new BindableProgressBarValue("progressValue"), ValueStringOverride = new BindableString("progressValueString"), Title = "Titolo contenuto", Status = new BindableString("progressStatus") } } } } }; var toast = new ToastNotification(toastContent.GetXml()); toast.Tag = "progress"; ToastNotificationManager.CreateToastNotifier().Show(toast);
Come si può notare dallo script, non c'è molta differenza rispetto ai template visti in precedenza. Cambiano solamente due cose: la prima è che è stato aggiunto al template un controllo AdaptiveProgressBar che permette la visualizzazione della progress bar, del titolo, dello stato del download e dei contenuti che sono a tutti gli effetti in "binding", mentre la seconda differenza riguarda l'assegnazione di un tag per identificare la notifica.
Come abbiamo detto, i contenuti sono in binding, proprio perché ha senso che vengano aggiornati nel momento del bisogno, quindi è sufficiente aggiornare la notifica recuperandola dal tag e cambiando i suoi metadati:
private void Update() { var data = new NotificationData(); data.Values["progressValue"] = "0.5"; data.Values["progressValueString"] = "50%"; data.Values["progressStatus"] = "Running..."; ToastNotificationManager.CreateToastNotifier().Update(data, "progress"); }
Maggiori informazioni sono disponibili su
http://aspit.co/bis
Per il secondo aspetto, invece, analizziamo un altro controllo che permette di interagire con l'applicazione, ovvero la TextBox. Lo scenario tipico è quello del "quick reply" quando arriva un messaggio, in cui c'è la notifica ma non c'è bisogno di aprire l'applicazione per rispondere e inviare, il tutto può essere gestito dal centro notifiche e da un background task.
Per integrarla in una notifica, è sufficiente aggiungere un input, come abbiamo già visto in precedenza, di tipo ToastTextBox:
ToastContent toastContent = new ToastContent() { Visual = new ToastVisual() { ... }, Actions = new ToastActionsCustom() { Inputs = { new ToastTextBox("textBox") { PlaceholderContent = "reply" } }, Buttons = { new ToastButton("Send", "action=reply") { ActivationType = ToastActivationType.Background, TextBoxId = "textbox" } } }, };
In questo caso, il controllo è demandato ad un background task che, leggerà il contenuto della casella di testo tramite l'attributo "textbox", e quindi seguirà tutto il flusso necessario all'invio del messaggio.
Il risultato finale di una notifica che include entrambi gli scenari, è simile al seguente:
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Implementare il throttling in ASP.NET Core
Sviluppare un'interfaccia utente in React con Tailwind CSS e Preline UI
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Creare gruppi di client per Event Grid MQTT
Utilizzare Tailwind CSS all'interno di React: installazione
Utilizzare le collection expression in C#
Eseguire attività pianificate con Azure Container Jobs
Eseguire query verso tipi non mappati in Entity Framework Core
Le novità di Angular: i miglioramenti alla CLI
Creazione di plugin per Tailwind CSS: espandere le Funzionalità del Framework
Verificare la provenienza di un commit tramite le GitHub Actions