Freigeben über


Statusleiste für Popups und Datenbindung

Mithilfe einer Statusleiste in Ihrer Popupbenachrichtigung können Sie dem Benutzer den Status langer Vorgänge vermitteln, z. B. Downloads, Videorendering, Übungsziele und vieles mehr.

Wichtig

Erfordert Creators Update und 1.4.0 der Benachrichtigungsbibliothek: Sie müssen sdk 15063 als Ziel verwenden und Build 15063 oder höher ausführen, um Statusanzeigen für Popups zu verwenden. Sie müssen Version 1.4.0 oder höher der UWP Community Toolkit Notifications NuGet-Bibliothek verwenden, um die Statusleiste im Inhalt Ihres Popups zu erstellen.

Eine Statusanzeige innerhalb eines Popups kann entweder "unbestimmt" sein (kein bestimmter Wert, animierte Punkte deuten darauf hin, dass ein Vorgang ausgeführt wird) oder "determiniert" (ein bestimmter Prozentsatz des Balkens ist gefüllt, z. B. 60%).

Wichtige APIs: NotificationData-Klasse, ToastNotifier.Update-Methode, ToastNotification-Klasse

Hinweis

Nur Desktop unterstützt Statusanzeigen in Popupbenachrichtigungen. Auf anderen Geräten wird die Statusanzeige von Ihrer Benachrichtigung gelöscht.

Die folgende Abbildung zeigt eine bestimmte Statusanzeige mit allen entsprechenden Eigenschaften, die beschriftet sind.

Popup mit Eigenschaften der Statusleiste mit beschrifteten Bezeichnungen
Eigenschaft Type Erforderlich Beschreibung
Titel Zeichenkette oder BindableString false Ruft eine optionale Titel-Zeichenkette ab oder legt sie fest. Unterstützt die Datenbindung.
Wert Doppelt oder AdaptiveProgressBarValue oder BindableProgressBarValue false Ruft den Wert der Statusanzeige ab oder legt ihn fest. Unterstützt die Datenbindung. Der Standardwert ist 0. Dies kann entweder ein Double zwischen 0,0 und 1,0 oder AdaptiveProgressBarValue.Indeterminatenew BindableProgressBarValue("myProgressValue").
ValueStringOverride Zeichenkette oder BindableString false Dient zum Abrufen oder Festlegen einer optionalen Zeichenkette, die anstelle der Standard Prozent-Zeichenkette angezeigt werden soll. Wenn dies nicht angegeben wird, wird etwas wie „70%“ angezeigt.
Status Zeichenkette oder BindableString true Dient zum Abrufen oder Festlegen einer Statuszeichenkette (erforderlich), die unter der Statusleiste auf der linken Seite angezeigt wird. Diese Zeichenkette sollte den Status des Vorgangs widerspiegeln, z.B. „Herunterladen...“ oder „Installieren...“

Hier erfahren Sie, wie Sie die oben angezeigte Benachrichtigung generieren würden...

new ToastContentBuilder()
    .AddText("Downloading your weekly playlist...")
    .AddVisualChild(new AdaptiveProgressBar()
    {
        Title = "Weekly playlist",
        Value = 0.6,
        ValueStringOverride = "15/26 songs",
        Status = "Downloading..."
    });

Sie müssen jedoch die Werte der Statusanzeige dynamisch aktualisieren, damit sie tatsächlich "live" ist. Dies kann mithilfe der Datenbindung erfolgen, um das Popup zu aktualisieren.

Verwenden der Datenbindung zum Aktualisieren eines Popups

Die Verwendung der Datenbindung umfasst die folgenden Schritte...

  1. Erstellen von Popupinhalten, die datengebundene Felder verwenden
  2. Zuweisen eines Tags (und optional einer Gruppe) zu Ihrer ToastNotification
  3. Definieren der anfänglichen Datenwerte für " ToastNotification"
  4. Senden des Popups
  5. Verwenden von Tag und Gruppe zum Aktualisieren der Datenwerte mit neuen Werten

Der folgende Codeausschnitt zeigt die Schritte 1-4. Der nächste Codeausschnitt zeigt, wie die Popupdatenwerte aktualisiert werden.

using Windows.UI.Notifications;
using Microsoft.Toolkit.Uwp.Notifications;
 
public void SendUpdatableToastWithProgress()
{
    // Define a tag (and optionally a group) to uniquely identify the notification, in order update the notification data later;
    string tag = "weekly-playlist";
    string group = "downloads";
 
    // Construct the toast content with data bound fields
    var content = new ToastContentBuilder()
        .AddText("Downloading your weekly playlist...")
        .AddVisualChild(new AdaptiveProgressBar()
        {
            Title = "Weekly playlist",
            Value = new BindableProgressBarValue("progressValue"),
            ValueStringOverride = new BindableString("progressValueString"),
            Status = new BindableString("progressStatus")
        })
        .GetToastContent();
 
    // Generate the toast notification
    var toast = new ToastNotification(content.GetXml());
 
    // Assign the tag and group
    toast.Tag = tag;
    toast.Group = group;
 
    // Assign initial NotificationData values
    // Values must be of type string
    toast.Data = new NotificationData();
    toast.Data.Values["progressValue"] = "0.6";
    toast.Data.Values["progressValueString"] = "15/26 songs";
    toast.Data.Values["progressStatus"] = "Downloading...";
 
    // Provide sequence number to prevent out-of-order updates, or assign 0 to indicate "always update"
    toast.Data.SequenceNumber = 1;
 
    // Show the toast notification to the user
    ToastNotificationManager.CreateToastNotifier().Show(toast);
}

Wenn Sie dann Ihre Datenwerte ändern möchten, verwenden Sie die Update-Methode, um die neuen Daten bereitzustellen, ohne die gesamte Popupnutzlast neu zu erstellen.

using Windows.UI.Notifications;
 
public void UpdateProgress()
{
    // Construct a NotificationData object;
    string tag = "weekly-playlist";
    string group = "downloads";
 
    // Create NotificationData and make sure the sequence number is incremented
    // since last update, or assign 0 for updating regardless of order
    var data = new NotificationData
    {
        SequenceNumber = 2
    };

    // Assign new values
    // Note that you only need to assign values that changed. In this example
    // we don't assign progressStatus since we don't need to change it
    data.Values["progressValue"] = "0.7";
    data.Values["progressValueString"] = "18/26 songs";

    // Update the existing notification's data by using tag/group
    ToastNotificationManager.CreateToastNotifier().Update(data, tag, group);
}

Wenn Sie die Update-Methode verwenden, anstatt das gesamte Popup zu ersetzen, wird auch sichergestellt, dass die Popupbenachrichtigung in der gleichen Position im Info-Center bleibt und nicht nach oben oder unten bewegt wird. Es wäre für den Benutzer ziemlich verwirrend, wenn das Popup alle paar Sekunden nach oben im Info-Center springt, während die Statusleiste gefüllt ist!

Die Update-Methode gibt eine Enumeration , NotificationUpdateResult, zurück, die Sie darüber informiert, ob das Update erfolgreich war oder ob die Benachrichtigung nicht gefunden werden konnte (was bedeutet, dass der Benutzer ihre Benachrichtigung wahrscheinlich geschlossen hat und Sie das Senden von Updates an sie beenden sollten). Es wird nicht empfohlen, ein weiteres Popup anzuzeigen, bis der Statusvorgang abgeschlossen wurde (z. B. wenn der Download abgeschlossen ist).

Elemente, die die Datenbindung unterstützen

Die folgenden Elemente in Popupbenachrichtigungen unterstützen die Datenbindung.

  • Alle Eigenschaften für AdaptiveProgress
  • Die Text-Eigenschaft auf den AdaptiveText-Elementen der obersten Ebene

Aktualisieren oder Ersetzen einer Benachrichtigung

Seit Windows 10 können Sie eine Benachrichtigung immer ersetzen , indem Sie ein neues Popup mit demselben Tag und derselben Gruppe senden. Was ist also der Unterschied zwischen dem Ersetzen des Popups und dem Aktualisieren der Popupdaten?

Ersetzen Wird aktualisiert
Position im Info-Center Verschiebt die Benachrichtigung an den Anfang des Info-Centers. Verlässt die Benachrichtigung im Info-Center.
Ändern von Inhalten Kann den gesamten Inhalt/das Layout des Popups vollständig ändern Kann nur Eigenschaften ändern, die die Datenbindung unterstützen (Statusleiste und Text auf oberster Ebene)
Wieder als Popup angezeigt Kann wieder als Popuppopup angezeigt werden, wenn Sie "SuppressPopup " auf "True" festlegen (oder auf "true" festlegen false , um es im Hintergrund an das Info-Center zu senden) Wird nicht wieder als Popup angezeigt; die Daten des Popups werden im Info-Center im Hintergrund aktualisiert.
Benutzer geschlossen Unabhängig davon, ob der Benutzer Ihre vorherige Benachrichtigung geschlossen hat, wird ihr Ersatz-Popup immer gesendet. Wenn der Benutzer Das Popup geschlossen hat, schlägt die Popupaktualisierung fehl.

Im Allgemeinen ist die Aktualisierung nützlich für...

  • Informationen, die sich in kurzer Zeit häufig ändern und nicht an den Anfang der Aufmerksamkeit des Benutzers gebracht werden müssen
  • Subtile Änderungen an Ihren Popupinhalten, z. B. 50 % auf 65 %

Oft empfehlen wir, nach Abschluss der Aktualisierungsreihenfolge (wie die Datei heruntergeladen wurde) den letzten Schritt zu ersetzen, da...

  • Ihre endgültige Benachrichtigung hat wahrscheinlich drastische Layoutänderungen, z. B. das Entfernen der Statusleiste, das Hinzufügen neuer Schaltflächen usw.
  • Möglicherweise hat der Benutzer Ihre ausstehende Statusbenachrichtigung geschlossen, da sie sich nicht um das Ansehen des Downloads kümmern, aber dennoch mit einem Popup-Popup benachrichtigt werden möchten, wenn der Vorgang abgeschlossen ist