Pasek postępu powiadomień aplikacji i powiązanie danych

Użycie paska postępu w powiadomieniu aplikacji umożliwia przekazanie użytkownikowi stanu długotrwałych operacji, takich jak pobieranie, renderowanie wideo, cele ćwiczeń i nie tylko.

Pasek postępu w powiadomieniu aplikacji może być "nieokreślony" (brak określonej wartości, animowane kropki wskazują, że operacja jest wykonywana) lub "determinate" (określony procent paska jest wypełniony, na przykład 60%).

Na poniższej ilustracji przedstawiono pasek postępu o ustalonym zakresie ze wszystkimi odpowiednimi właściwościami oznaczonymi.

Aby uzyskać więcej informacji na temat powiadomień aplikacji, zobacz Omówienie powiadomień aplikacji.

Powiadomienie aplikacji z opisanymi właściwościami paska postępu
Majątek Typ Required Opis
Nazwa Ciąg lub BindableString fałszywy Pobiera lub ustawia opcjonalny ciąg tytułu. Obsługuje powiązanie danych.
Wartość double lub AdaptiveProgressBarValue lub BindableProgressBarValue fałszywy Pobiera lub ustawia wartość paska postępu. Obsługuje powiązanie danych. Wartość domyślna to 0. Może być podwójne z zakresu od 0.0 do 1.0, AdaptiveProgressBarValue.Indeterminatelub new BindableProgressBarValue("myProgressValue").
ValueStringOverride Ciąg lub BindableString fałszywy Pobiera lub ustawia opcjonalny ciąg, który ma być wyświetlany zamiast domyślnego ciągu procentowego. Jeśli to nie zostanie podane, zostanie wyświetlony komunikat podobny do "70%".
Status Ciąg lub BindableString true Pobiera lub ustawia ciąg stanu (wymagany), który jest wyświetlany pod paskiem postępu po lewej stronie. Ten ciąg powinien odzwierciedlać stan operacji, na przykład "Pobieranie..." lub "Instalowanie..."

Użyj elementu AppNotificationBuilder.AddProgressBar , aby dodać pasek postępu do powiadomienia. Poniższy przykład generuje powiadomienie pokazane powyżej.

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

Aby dynamicznie aktualizować wartości paska postępu, użyj powiązania danych zgodnie z opisem w następnej sekcji.

Aktualizowanie paska postępu za pomocą powiązania danych

Aby wyświetlić pasek postępu na żywo, użyj powiązania danych, aby zaktualizować wartości powiadomień bez ponownego wysyłania całego powiadomienia.

  1. Konstruowanie zawartości powiadomień przy użyciu pól powiązanych z danymi przez wywołanie Bind metod na pasku AppNotificationProgressBar.
  2. Przypisz tag (i opcjonalnie grupę), aby zidentyfikować powiadomienie.
  3. Ustaw początkowe wartości AppNotificationProgressData .
  4. Pokaż powiadomienie, wywołując element 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);

Następnie zaktualizuj wartości postępu, wywołując metodę AppNotificationManager.Default.UpdateAsync przy użyciu nowego wystąpienia AppNotificationProgressData . Zwiększ numer sekwencji, aby platforma wiedziała, że jest to nowsza aktualizacja.

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);

Użycie narzędzia UpdateAsync zamiast zastępowania całego powiadomienia gwarantuje, że powiadomienie pozostanie w tej samej pozycji w Centrum powiadomień i nie zostanie przeniesione w górę lub w dół. Metoda zwraca wartość NotificationUpdateResult wskazującą, czy aktualizacja zakończyła się pomyślnie, czy nie można odnaleźć powiadomienia (użytkownik mógł go odrzucić).

Elementy obsługujące powiązanie danych

Następujące elementy w powiadomieniach aplikacji obsługują powiązanie danych:

  • Wszystkie właściwości AppNotificationProgressBar
  • Właściwość Text na elementach tekstowych najwyższego poziomu

Aktualizowanie lub zastępowanie powiadomienia

Powiadomienie można zastąpić , wysyłając nowe powiadomienie za pomocą tego samego tagu i grupy. W poniższej tabeli opisano różnicę między zastępowaniem i aktualizowaniem powiadomienia.

Zastąpienie Aktualizowanie
Pozycja w Centrum powiadomień Przenosi powiadomienie na górę Centrum Powiadomień. Pozostawia powiadomienie w centrum powiadomień.
Modyfikowanie zawartości Może całkowicie zmienić całą zawartość i układ powiadomienia. Może zmieniać tylko właściwości obsługujące powiązanie danych (pasek postępu i tekst najwyższego poziomu).
Ponowne pojawianie się jako wyskakujące okienko Może pojawić się ponownie jako popup, jeśli element SuppressPopup jest false (lub jeśli zostanie ustawiony na true w trybie dyskretnym, aby cicho wysłać go do Centrum powiadomień). Nie pojawi się ponownie jako wyskakujące okienko; dane powiadomienia są aktualizowane w trybie dyskretnym w Centrum powiadomień.
Użytkownik został odrzucony Powiadomienie zastępcze jest zawsze wysyłane niezależnie od tego, czy użytkownik odrzucił poprzednie powiadomienie. Jeśli użytkownik odrzucił powiadomienie, aktualizacja zakończy się niepowodzeniem.

Ogólnie rzecz biorąc, aktualizacja jest przydatna w przypadku informacji, które zmieniają się często i nie wymagają natychmiastowej uwagi użytkownika, takich jak postęp zmieniający się z 50% na 65%.

Po zakończeniu sekwencji aktualizacji (na przykład po zakończeniu pobierania pliku rozważ zastąpienie powiadomienia ostatnim krokiem, ponieważ:

  • Ostateczne powiadomienie prawdopodobnie ma inny układ, taki jak usunięcie paska postępu lub dodanie nowych przycisków.
  • Użytkownik mógł odrzucić powiadomienie o postępie, ale nadal chce zobaczyć wyskakujące okienko po zakończeniu operacji.

Zobacz także