Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Użycie paska postępu wewnątrz wyskakującego powiadomienia umożliwia poinformowanie użytkownika o stanie długotrwałych operacji, takich jak pobieranie, renderowanie wideo, cele ćwiczeń i nie tylko.
Important
wymaga aktualizacji dla twórców i biblioteki powiadomień w wersji 1.4.0: musisz kierować zestaw SDK 15063 i uruchamiać kompilację 15063 lub nowszą, aby używać pasków postępu na wyskakowanych paskach. Musisz użyć wersji 1.4.0 lub nowszej biblioteki NuGet zestawów narzędzi platformy UWP Community Toolkit, aby utworzyć pasek postępu w zawartości wyskakowania.
Pasek postępu wewnątrz wyskakujących może być "nieokreślony" (brak określonej wartości, animowane kropki wskazują, że operacja występuje) lub "determinate" (określony procent paska jest wypełniony, na przykład 60%).
ważne interfejsy API: klasa NotificationData, metoda ToastNotifier.Update, klasa ToastNotification
Note
Tylko wersja Desktop obsługuje paski postępu w powiadomieniach typu toast. Na innych urządzeniach pasek postępu zostanie porzucony z powiadomienia.
Na poniższym obrazie przedstawiono pasek postępu determinate ze wszystkimi odpowiednimi właściwościami oznaczonymi etykietami.
| Property | Typ | Required | Description |
|---|---|---|---|
| Title | Ciąg lub BindableString | false | Pobiera lub ustawia opcjonalny ciąg tytułu. Obsługuje powiązanie danych. |
| Value | double lub AdaptiveProgressBarValue lub BindableProgressBarValue | false | 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 | false | 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..." |
Poniżej przedstawiono sposób generowania powiadomienia widocznego powyżej...
new ToastContentBuilder()
.AddText("Downloading your weekly playlist...")
.AddVisualChild(new AdaptiveProgressBar()
{
Title = "Weekly playlist",
Value = 0.6,
ValueStringOverride = "15/26 songs",
Status = "Downloading..."
});
Należy jednak dynamicznie aktualizować wartości paska postępu, aby rzeczywiście była "aktywna". Można to zrobić za pomocą powiązania danych, aby zaktualizować powiadomienie toast.
Używanie powiązania danych w celu zaktualizowania komunikatu
Korzystanie z powiązania danych obejmuje następujące kroki...
- Tworzenie zawartości powiadomienia z wykorzystaniem pól powiązanych z danymi
- Przypisz tagu
(i opcjonalniegrupy ) do ToastNotification - Zdefiniuj wartości początkowe Data w ToastNotification
- Wyślij powiadomienie
- Wykorzystaj Tag i Group do aktualizacji wartości Data nowymi wartościami
Poniższy fragment kodu przedstawia kroki od 1 do 4. W następnym fragmencie kodu pokazano, jak zaktualizować wyskakujące wartości Data.
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);
}
Następnie, gdy chcesz zmienić wartości Data, użyj metody Update, aby podać nowe dane bez konieczności ponownego konstruowania całego ładunku komunikatu toast.
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);
}
Użycie metody Update zamiast zastępowania całego powiadomienia typu toast gwarantuje również, że powiadomienie toast pozostaje na swoim miejscu w Centrum akcji i nie przesuwa się ani w górę, ani w dół. To byłoby dość mylące dla użytkownika, gdyby wyskakujące okienko ciągle skakało na górę Centrum akcji co kilka sekund, podczas gdy pasek postępu się wypełnia.
Metoda Update zwraca wyliczenie NotificationUpdateResult, które informuje o tym, czy aktualizacja zakończyła się pomyślnie, czy nie można odnaleźć powiadomienia (co oznacza, że użytkownik prawdopodobnie odrzucił powiadomienie i należy zatrzymać wysyłanie aktualizacji do niego). Nie zalecamy wyświetlania kolejnego powiadomienia do momentu zakończenia operacji postępu (na przykład po zakończeniu pobierania).
Elementy obsługujące powiązanie danych
Następujące elementy w powiadomieniach wyskakujące obsługują powiązanie danych
- Wszystkie właściwości AdaptiveProgress
- Właściwość Text na elementach AdaptiveText najwyższego poziomu
Aktualizowanie lub zastępowanie powiadomienia
Od systemu Windows 10 zawsze można zastąpić powiadomienie, wysyłając nowy wyskakujące wyskakujące powiadomienie o tym samym tagu i grupie . Więc jaka jest różnica między zastąpieniem komunikatu a aktualizacją danych komunikatu?
| Replacing | Updating | |
|---|---|---|
| pozycja w Centrum Akcji | Przenosi powiadomienie na górę Centrum akcji. | Pozostawia powiadomienie w obrębie Centrum akcji. |
| Modifying content | Może całkowicie zmienić zawartość i układ komunikatu typu toast. | Może zmieniać tylko właściwości, które obsługują powiązanie danych (pasek postępu i tekst najwyższego poziomu) |
| ponownie wyświetlane jako okienko popup | Może pojawić się ponownie jako wyskakujące okienko, jeśli pozostawisz SuppressPopup ustawioną na false (lub ustawisz na prawda, aby dyskretnie wysłać do Centrum akcji) |
Nie pojawi się ponownie jako okienko; dane powiadomienia są po cichu aktualizowane w Centrum akcji |
| User dismissed | Niezależnie od tego, czy użytkownik odrzucił poprzednie powiadomienie, zamienny komunikat toast zawsze będzie wysyłany. | Jeśli użytkownik odrzucił powiadomienie, aktualizacja powiadomienia zakończy się niepowodzeniem. |
Ogólnie rzecz biorąc, aktualizacja jest przydatna w przypadku...
- Informacje, które często zmieniają się w krótkim czasie i nie wymagają zwracania uwagi użytkownika
- Subtelne zmiany zawartości komunikatów toast, takie jak zmiana wartości 50% na 65%
Często po zakończeniu całego procesu aktualizacji (na przykład gdy plik został pobrany), zalecamy dokonanie zastąpienia w ostatnim kroku, ponieważ...
- Ostateczne powiadomienie prawdopodobnie ma drastyczne zmiany układu, takie jak usunięcie paska postępu, dodanie nowych przycisków itp.
- Użytkownik mógł odrzucić oczekujące powiadomienie o postępie, ponieważ nie zależy mu na oglądaniu pobierania, ale nadal chce być powiadomiony za pomocą powiadomienia typu toast po zakończeniu operacji.
Related topics
Windows developer