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
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Paginare i risultati con QuickGrid in Blazor
Recuperare App Service cancellati su Azure
Utilizzare Container Queries nominali
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Utilizzare il nuovo modello GPT-4o con Azure OpenAI
Eseguire operazioni sui blob con Azure Storage Actions
Eseguire script pre e post esecuzione di un workflow di GitHub
Utilizzare DeepSeek R1 con Azure AI