Bilah kemajuan toast dan pengikatan data
Menggunakan bilah kemajuan di dalam pemberitahuan toast memungkinkan Anda untuk menyampaikan status operasi jangka panjang kepada pengguna, seperti unduhan, penyajian video, tujuan latihan, dan banyak lagi.
Penting
Memerlukan Pembaruan Pembuat dan pustaka Pemberitahuan 1.4.0: Anda harus menargetkan SDK 15063 dan menjalankan build 15063 atau yang lebih baru untuk menggunakan bilah kemajuan pada toast. Anda harus menggunakan versi 1.4.0 atau yang lebih baru dari pustaka NuGet Pemberitahuan Toolkit Komunitas UWP untuk membuat bilah kemajuan dalam konten toast Anda.
Bilah kemajuan di dalam roti panggang dapat "tidak ditentukan" (tidak ada nilai tertentu, titik animasi menunjukkan operasi sedang terjadi) atau "menentukan" (persentase tertentu dari bilah diisi, seperti 60%).
API Penting: Kelas NotificationData, metode ToastNotifier.Update, kelas ToastNotification
Catatan
Hanya Desktop yang mendukung bilah kemajuan dalam pemberitahuan toast. Di perangkat lain, bilah kemajuan akan dihilangkan dari pemberitahuan Anda.
Gambar di bawah ini memperlihatkan bilah kemajuan penentuan dengan semua properti terkait berlabel.
Properti | Tipe | Wajib | Deskripsi |
---|---|---|---|
Judul | string atau BindableString | salah | Mendapatkan atau mengatur string judul opsional. Mendukung pengikatan data. |
Nilai | double atau AdaptiveProgressBarValue atau BindableProgressBarValue | salah | Mendapatkan atau mengatur nilai bilah kemajuan. Mendukung pengikatan data. Default ke 0. Dapat berupa ganda antara 0,0 dan 1,0, AdaptiveProgressBarValue.Indeterminate , atau new BindableProgressBarValue("myProgressValue") . |
ValueStringOverride | string atau BindableString | salah | Mendapatkan atau mengatur string opsional yang akan ditampilkan alih-alih string persentase default. Jika ini tidak disediakan, sesuatu seperti "70%" akan ditampilkan. |
Keadaan | string atau BindableString | benar | Mendapatkan atau mengatur string status (diperlukan), yang ditampilkan di bawah bilah kemajuan di sebelah kiri. String ini harus mencerminkan status operasi, seperti "Mengunduh..." atau "Menginstal..." |
Berikut adalah cara Anda akan menghasilkan pemberitahuan yang terlihat di atas...
new ToastContentBuilder()
.AddText("Downloading your weekly playlist...")
.AddVisualChild(new AdaptiveProgressBar()
{
Title = "Weekly playlist",
Value = 0.6,
ValueStringOverride = "15/26 songs",
Status = "Downloading..."
});
Namun, Anda harus memperbarui nilai bilah kemajuan secara dinamis agar benar-benar "langsung". Ini dapat dilakukan dengan menggunakan pengikatan data untuk memperbarui toast.
Menggunakan pengikatan data untuk memperbarui toast
Menggunakan pengikatan data melibatkan langkah-langkah berikut...
- Membuat konten toast yang menggunakan bidang terikat data
- Menetapkan Tag (dan secara opsional Grup) ke ToastNotification Anda
- Tentukan nilai Data awal Anda di ToastNotification Anda
- Kirim roti panggang
- Menggunakan Tag dan Grup untuk memperbarui nilai Data dengan nilai baru
Cuplikan kode berikut menunjukkan langkah 1-4. Cuplikan berikutnya akan menunjukkan cara memperbarui nilai Data toast.
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);
}
Kemudian, saat Anda ingin mengubah nilai Data, gunakan metode Perbarui untuk menyediakan data baru tanpa membuat ulang seluruh payload 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);
}
Menggunakan metode Perbarui daripada mengganti seluruh roti panggang juga memastikan bahwa pemberitahuan roti panggang tetap berada di posisi yang sama di Pusat Tindakan dan tidak bergerak ke atas atau ke bawah. Akan sangat membingungkan bagi pengguna jika roti panggang terus melompat ke bagian atas Pusat Tindakan setiap beberapa detik saat bilah kemajuan terisi!
Metode Pembaruan mengembalikan enum, NotificationUpdateResult, yang memungkinkan Anda mengetahui apakah pembaruan berhasil atau apakah pemberitahuan tidak dapat ditemukan (yang berarti pengguna kemungkinan telah menutup pemberitahuan Anda dan Anda harus berhenti mengirim pembaruan ke dalamnya). Kami tidak menyarankan untuk memunculkan toast lain hingga operasi kemajuan Anda selesai (seperti ketika unduhan selesai).
Elemen yang mendukung pengikatan data
Elemen berikut dalam pemberitahuan toast mendukung pengikatan data
- Semua properti di AdaptiveProgress
- Properti Teks pada elemen AdaptiveText tingkat atas
Memperbarui atau mengganti pemberitahuan
Karena Windows 10, Anda selalu dapat mengganti pemberitahuan dengan mengirim toast baru dengan Tag dan Grup yang sama. Jadi apa perbedaan antara mengganti roti panggang dan memperbarui data toast?
Mengganti | Memperbarui | |
---|---|---|
Posisi di Pusat Tindakan | Memindahkan pemberitahuan ke bagian atas Pusat Tindakan. | Membiarkan pemberitahuan di tempat dalam Pusat Tindakan. |
Memodifikasi konten | Dapat sepenuhnya mengubah semua konten/tata letak roti panggang | Hanya dapat mengubah properti yang mendukung pengikatan data (bilah kemajuan dan teks tingkat atas) |
Muncul kembali sebagai popup | Dapat muncul kembali sebagai popup roti panggang jika Anda membiarkan SuppressPopup diatur ke false (atau diatur ke true untuk mengirimnya secara diam-diam ke Pusat Tindakan) |
Tidak akan muncul kembali sebagai popup; data toast diperbarui secara diam-diam dalam Pusat Tindakan |
Pengguna diberhentikan | Terlepas dari apakah pengguna menutup pemberitahuan Anda sebelumnya, roti panggang pengganti Anda akan selalu dikirim | Jika pengguna menutup toast Anda, pembaruan roti panggang akan gagal |
Secara umum, pembaruan berguna untuk...
- Informasi yang sering berubah dalam waktu singkat dan tidak perlu dibawa ke depan perhatian pengguna
- Perubahan halang pada konten toast Anda, seperti mengubah 50% menjadi 65%
Sering kali, setelah urutan pembaruan Anda selesai (seperti file telah diunduh), sebaiknya ganti untuk langkah terakhir, karena...
- Pemberitahuan akhir Anda kemungkinan memiliki perubahan tata letak drastis, seperti penghapusan bilah kemajuan, penambahan tombol baru, dll
- Pengguna mungkin telah menutup pemberitahuan kemajuan Anda yang tertunda karena mereka tidak peduli menonton unduhannya, tetapi masih ingin diberi tahu dengan roti panggang popup ketika operasi selesai
Topik terkait
Windows developer