Megosztás:


Értesítési folyamatjelző sáv és adatkötés

A toast értesítésben egy folyamatjelző sáv használatával megmutathatja a felhasználónak a hosszan futó műveletek állapotát, például letöltéseket, videó renderelést, gyakorlatcélokat és egyebeket.

Important

Az Értesítési kódtár 1.4.0-s és 1.4.0-s frissítését igényli: Meg kell céloznia az SDK 15063-at, és az 15063-os vagy újabb buildet kell futtatnia a bejelentések állapotsávjainak használatához. A UWP Community Toolkit Notifications NuGet könyvtár 1.4.0-s vagy újabb verzióját kell használnia a bejelentés tartalmában lévő folyamatjelző sáv létrehozásához.

A bejelentések folyamatjelző sávja lehet "meghatározatlan" (nincs konkrét érték, animált pöttyök jelzik, hogy egy művelet történik) vagy "determinátum" (a sáv egy adott százaléka megtelt, például 60%).

Fontos API-k: NotificationData osztály, ToastNotifier.Update metódus, ToastNotification osztály

Note

A bejelentési értesítésekben csak a Desktop támogatja a folyamatjelző sávokat. Más eszközökön a folyamatjelző sáv el lesz távolítva az értesítésből.

Az alábbi képen egy determinált folyamatjelző sáv látható, amelynek minden megfelelő tulajdonsága fel van címkézve.

értesítés jelzett folyamatjelző tulajdonságokkal
Property Típus Required Description
Title karakterlánc vagy BindableString false Lekéri vagy beállítja a nem kötelező címkarakterláncot. Támogatja az adatkötést.
Value Dupla vagy Adaptív progressziósávérték vagy Kötődő progressziósávérték false Lekéri vagy beállítja a(z) folyamatjelző sáv értékét. Támogatja az adatkötést. Alapértelmezés szerint 0. Lehet dupla 0,0 és 1,0 között, AdaptiveProgressBarValue.Indeterminatevagy new BindableProgressBarValue("myProgressValue").
ValueStringOverride karakterlánc vagy BindableString false Lekéri vagy beállítja az alapértelmezett százalékos sztring helyett megjelenítendő opcionális sztringet. Ha ez nincs megadva, a "70%" üzenet jelenik meg.
Status karakterlánc vagy BindableString true Lekéri vagy beállít egy állapotsztringet (kötelező), amely a bal oldali folyamatjelző sáv alatt jelenik meg. Ennek a sztringnek a művelet állapotát kell tükröznie, például a "Letöltés..." vagy "Telepítés..."

Így hozhatja létre a fent látható értesítést...

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

A folyamatjelző sáv értékeit azonban dinamikusan frissítenie kell ahhoz, hogy valóban "élő" legyen. Ezt adatkötéssel teheti meg a bejelentés frissítéséhez.

Adatkötés használata értesítés frissítéséhez

Az adatkötés használata a következő lépésekkel jár...

  1. Adatkötött mezőket használó értesítési tartalom létrehozása
  2. Címke hozzárendelése (és opcionálisan egy csoport) a ToastNotification-hoz.
  3. Adja meg a kezdeti Adat értékeit a ToastNotification-hez.
  4. Az üzenet elküldése
  5. Az adatértékek új értékekkel való frissítéséhez használja a Címke és a Csoport függvényt

Az alábbi kódrészlet az 1–4. lépést mutatja be. A következő kódrészlet bemutatja, hogyan frissítse a toast adat értékeket.

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

Ezután, ha módosítani szeretné a Adat értékeit, használja a Update metódust az új adatok megadására anélkül, hogy újra létre kellene hoznia az egész toast üzenet tartalmát.

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

A Update metódus használata a teljes toast cseréje helyett azt is biztosítja, hogy a toast értesítés ugyanabban a pozícióban maradjon a Műveletközpontban, és ne mozduljon felfelé vagy lefelé. Elég zavaró lenne a felhasználó számára, ha az értesítés néhány másodpercenként a Műveletközpont tetejére ugrálna, miközben a folyamatjelző sáv töltődik!

Az Update metódus egy enumerációt ad vissza, a NotificationUpdateResult értéket, amely tájékoztatja Önt arról, hogy a frissítés sikeres volt-e, vagy nem található-e az értesítés (ami azt jelenti, hogy a felhasználó valószínűleg elutasította az értesítést, és nem kell frissítéseket küldenie hozzá). Nem javasoljuk, hogy újabb bejelentést tegyen, amíg a folyamat befejeződött (például amikor a letöltés befejeződik).

Adatkötést támogató elemek

A toast értesítések következő elemei támogatják az adatkötést

  • Az AdaptiveProgress összes tulajdonsága
  • A felső szintű AdaptiveText elemek Szöveg tulajdonsága

Értesítés frissítése vagy cseréje

A Windows 10 óta mindig lecserélni egy értesítést úgy, hogy új bejelentést küld ugyanazzal a Címke és Csoport. Mi a különbség az értesítés cseréje és az értesítés adatainak frissítése között?

Replacing Updating
Pozíció a Műveletközpontban Az értesítés áthelyezése a Műveletközpont tetejére. Az értesítés a Műveletközpontban marad.
Modifying content Teljesen megváltoztathatja az értesítés összes tartalmát és elrendezését. Csak olyan tulajdonságok módosíthatók, amelyek támogatják az adatkötést (folyamatjelző sáv és felső szintű szöveg)
Újra megjelenő előugró ablak Újra megjelenhet előugró értesítésként, ha a ElnyomásElőugróAblakotfalse értékre állítja (vagy igaz értékre állítja, hogy csendesen elküldje az Értesítési központba) Nem fognak újra megjelenni előugró ablakként; az értesítés adatai észrevétlenül frissülnek a Műveletközpontban.
User dismissed Függetlenül attól, hogy a felhasználó elutasította-e a korábbi értesítést, a helyettesítő üzenet mindig elküldésre kerül. Ha a felhasználó elutasította az értesítést, az értesítés frissítése nem sikerül.

Általában frissítés hasznos...

  • Olyan információk, amelyek rövid idő alatt gyakran változnak, és nem igénylik a felhasználó figyelmét
  • Finom módosítások az értesítési tartalomban, például 50% módosítása 65%-re.

Gyakran javasoljuk, hogy miután a frissítések sorozata befejeződött (mint például a fájl letöltése), hajtsa végre a cserét a végső lépésként, mert...

  • A végleges értesítés valószínűleg drasztikus elrendezésváltozásokkal rendelkezik, például eltávolítja a folyamatjelző sávot, új gombokat ad hozzá stb.
  • Előfordulhat, hogy a felhasználó elutasította a függőben lévő állapotról szóló értesítést, mivel nem érdekli őket a letöltés megtekintése, de a művelet befejezésekor egy előugró bejelentéssel szeretne értesítést kapni