Condividi tramite


Barra di progresso delle notifiche dell'app e data binding

L'uso di un indicatore di stato all'interno della notifica dell'app consente di trasmettere lo stato delle operazioni a esecuzione prolungata all'utente, ad esempio download, rendering video, obiettivi di esercizio e altro ancora.

Un indicatore di stato all'interno di una notifica dell'app può essere "indeterminato" (nessun valore specifico, punti animati indica che si sta verificando un'operazione) o "determinato" (una percentuale specifica della barra viene riempita, ad esempio 60%).

L'immagine seguente mostra un indicatore di stato determinato con tutte le proprietà corrispondenti etichettate.

Per altre informazioni sulle notifiche delle app, vedere Panoramica delle notifiche delle app.

Notifica dell'app con le proprietà della barra di progresso etichettate
Proprietà Tipo Obbligatorio Descrizione
Titolo stringa o BindableString falso Ottiene o imposta una stringa di titolo facoltativa. Supporta il data binding.
Valore double oppure AdaptiveProgressBarValue oppure BindableProgressBarValue falso Ottiene o imposta il valore della barra di avanzamento. Supporta il data binding. Il valore predefinito è 0. Può essere un valore double compreso tra 0,0 e 1,0, AdaptiveProgressBarValue.Indeterminateo new BindableProgressBarValue("myProgressValue").
ValueStringOverride stringa o BindableString falso Ottiene o imposta una stringa facoltativa da visualizzare anziché la stringa percentuale predefinita. Se non viene specificato, verrà visualizzato un messaggio simile a "70%".
Stato stringa o BindableString true Ottiene o imposta una stringa di stato (obbligatoria), visualizzata sotto la barra di stato a sinistra. Questa stringa deve riflettere lo stato dell'operazione, ad esempio "Download..." o "Installazione..."

Usare AppNotificationBuilder.AddProgressBar per aggiungere una barra di stato alla notifica. L'esempio seguente genera la notifica illustrata in precedenza.

var builder = new AppNotificationBuilder()
    .AddText("Downloading your weekly playlist...")
    .AddProgressBar(new AppNotificationProgressBar()
        .SetTitle("Weekly playlist")
        .SetValue(0.6)
        .SetValueStringOverride("15/26 songs")
        .SetStatus("Downloading..."));

Per aggiornare dinamicamente i valori della barra di stato, usare il data binding come descritto nella sezione successiva.

Aggiornare una barra di avanzamento con il data binding

Per visualizzare un indicatore di stato attivo, usare il data binding per aggiornare i valori di notifica senza inviare nuovamente l'intera notifica.

  1. Costruire il contenuto delle notifiche con campi associati a dati chiamando i Bind metodi in AppNotificationProgressBar.
  2. Assegnare un tag (e facoltativamente un gruppo) per identificare la notifica.
  3. Impostare i valori iniziali di AppNotificationProgressData .
  4. Visualizzare la notifica chiamando AppNotificationManager.Default.Show.
using Microsoft.Windows.AppNotifications;
using Microsoft.Windows.AppNotifications.Builder;

string tag = "weekly-playlist";
string group = "downloads";

var builder = new AppNotificationBuilder()
    .AddText("Downloading your weekly playlist...")
    .AddProgressBar(new AppNotificationProgressBar()
        .BindTitle()
        .BindValue()
        .BindValueStringOverride()
        .BindStatus());

var notification = builder.BuildNotification();
notification.Tag = tag;
notification.Group = group;

notification.Progress = new AppNotificationProgressData(1)
{
    Title = "Weekly playlist",
    Value = 0.6,
    ValueStringOverride = "15/26 songs",
    Status = "Downloading..."
};

AppNotificationManager.Default.Show(notification);

Aggiornare quindi i valori di stato chiamando AppNotificationManager.Default.UpdateAsync con una nuova istanza di AppNotificationProgressData . Incrementare il numero di sequenza in modo che la piattaforma sappia che si tratta di un aggiornamento più recente.

using Microsoft.Windows.AppNotifications;

string tag = "weekly-playlist";
string group = "downloads";

var data = new AppNotificationProgressData(2)
{
    Value = 0.7,
    ValueStringOverride = "18/26 songs"
};

await AppNotificationManager.Default.UpdateAsync(data, tag, group);

L'uso di UpdateAsync anziché sostituire l'intera notifica garantisce che la notifica rimanga nella stessa posizione nel Centro notifiche e non si sposta verso l'alto o verso il basso. Il metodo restituisce un oggetto NotificationUpdateResult che indica se l'aggiornamento è riuscito o se non è stato possibile trovare la notifica (l'utente potrebbe aver ignorato l'aggiornamento).

Elementi che supportano il data binding

Gli elementi seguenti nelle notifiche dell'app supportano il data binding:

  • Tutte le proprietà in AppNotificationProgressBar
  • Proprietà Text negli elementi di testo di primo livello

Aggiornare o sostituire una notifica

È possibile sostituire una notifica inviando una nuova notifica con lo stesso tag e gruppo. Nella tabella seguente viene descritta la differenza tra la sostituzione e l'aggiornamento di una notifica.

Sostituzione Aggiornamento
Posizione nel Centro notifiche Sposta la notifica nella parte superiore del Centro notifiche. Lascia la notifica sul posto all'interno del Centro notifiche.
Modifica del contenuto Può modificare completamente tutto il contenuto e il layout della notifica. Può modificare solo le proprietà che supportano il data binding (indicatore di stato e testo di primo livello).
Riaprire come popup Può essere visualizzato nuovamente come popup se SuppressPopup è false (o impostato su true per inviarlo automaticamente al Centro notifiche). Non riapparirà come popup; i dati della notifica vengono aggiornati automaticamente all'interno del Centro notifiche.
Utente rimosso La notifica di sostituzione viene sempre inviata indipendentemente dal fatto che l'utente abbia ignorato la notifica precedente. Se l'utente ha ignorato la notifica, l'aggiornamento avrà esito negativo.

In generale, l'aggiornamento è utile per informazioni che cambiano frequentemente e non richiedono l'attenzione immediata dell'utente, ad esempio lo stato di avanzamento passando da 50% a 65%.

Al termine della sequenza di aggiornamenti (ad esempio, il download di un file), è consigliabile sostituire la notifica per il passaggio finale perché:

  • È probabile che la notifica finale abbia layout diverso, ad esempio la rimozione della barra di stato o l'aggiunta di nuovi pulsanti.
  • L'utente potrebbe aver ignorato la notifica di stato, ma vuole comunque visualizzare un popup al termine dell'operazione.

Vedere anche