Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
С помощью индикатора выполнения во всплывающем уведомлении можно передать состояние длительных операций пользователю, например скачивание, рендеринг видео, цели в упражнениях и многое другое.
Это важно
Требуются Creators Update и версия 1.4.0 библиотеки уведомлений: вы должны использовать SDK 15063 и запускать сборку 15063 или более позднюю, чтобы использовать индикаторы выполнения в тостах. Для создания индикатора выполнения в содержимом всплывающего элемента необходимо использовать библиотеку NuGet с помощью
Индикатор выполнения в тосте может быть "неопределённым" (нет определённого значения, анимированные точки указывают, что операция происходит) или "определённым" (определённый процент индикатора заполнен, например, 60%).
Важные API: класс NotificationData, метод ToastNotifier.Update, класс ToastNotification
Замечание
Только настольная версия поддерживает индикаторы хода выполнения в тост уведомлениях. На других устройствах полоса прогресса будет удалена из вашего уведомления.
На рисунке ниже показан определённый индикатор прогресса со всеми соответствующими свойствами.

Недвижимость | Тип | Обязательно | Описание |
---|---|---|---|
Заголовок | строка или BindableString | неправда | Возвращает или задает строку заголовка, которая может быть необязательной. Поддерживает привязку данных. |
Ценность | double или AdaptiveProgressBarValue или BindableProgressBarValue | неправда | Возвращает или задает значение индикатора выполнения. Поддерживает привязку данных. Значение по умолчанию — 0. Может быть двойным в диапазоне от 0.0 до 1.0, AdaptiveProgressBarValue.Indeterminate или new BindableProgressBarValue("myProgressValue") . |
ValueStringOverride | строка или BindableString | неправда | Возвращает или задает необязательную строку, отображаемую вместо процентной строки по умолчанию. Если это не указано, будет отображаться что-то вроде "70%". |
Статус | строка или BindableString | правда | Возвращает или задает строку состояния (обязательно), которая отображается слева под индикатором выполнения. Эта строка должна отражать состояние операции, например "Скачивание..." или "Установка..." |
Вот как вы создайте уведомление, приведенное выше...
new ToastContentBuilder()
.AddText("Downloading your weekly playlist...")
.AddVisualChild(new AdaptiveProgressBar()
{
Title = "Weekly playlist",
Value = 0.6,
ValueStringOverride = "15/26 songs",
Status = "Downloading..."
});
Однако необходимо динамически обновить значения индикатора выполнения, чтобы он фактически был "активным". Это можно сделать с использованием привязки данных для обновления уведомления toast.
Использование привязки данных для обновления уведомления toast
Использование привязки данных включает следующие шаги...
- Создание всплывающего содержимого, использующее поля с привязкой к данным
- Назначьте тег (и, опционально, группу ) для вашего уведомления ToastNotification
- Определите начальные значения данных на ToastNotification
- Отправить уведомление-тост
- Используйте Тег и Группу для обновления значений Данных новыми значениями.
В следующем фрагменте кода показаны шаги 1–4. В следующем фрагменте будет показано, как обновить значения данных тоста и.
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);
}
Затем, когда вы хотите изменить значения data, используйте метод Update, чтобы предоставить новые данные без пересборки всего полезного груза.
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);
}
Использование метода обновления update вместо замены всего всплывающего уведомления также гарантирует, что всплывающее уведомление остается в той же позиции в Центре уведомлений и не перемещается вверх или вниз. Это было бы довольно запутанно для пользователя, если всплывающее уведомление продолжало перемещаться наверх Центра уведомлений каждые несколько секунд, пока индикатор хода выполнения заполняется!
Метод Update возвращает перечисление, NotificationUpdateResult, которое позволяет узнать, было ли обновление успешным или уведомление не удалось найти. Это означает, что пользователь, скорее всего, отклонил ваше уведомление, и вам следует прекратить отправлять обновления к нему. Мы не рекомендуем проявлять другое уведомление до завершения операции (например, когда скачивание завершится).
Элементы, поддерживающие привязку данных
Следующие элементы во всплывающих уведомлениях поддерживают привязку данных
- Все свойства в AdaptiveProgress
- Свойство Text на верхнего уровня элементов AdaptiveText
Обновление или замена уведомления
Так как Windows 10, вы всегда можете
Замена | Обновление | |
---|---|---|
положение в Центре действий | Перемещает уведомление в начало Центра уведомлений. | Оставляет уведомление на месте в Центре уведомлений. |
Изменение содержимого | Может полностью изменить все содержимое и макет уведомления | Может изменять только свойства, поддерживающие привязку данных (индикатор выполнения и текст верхнего уровня) |
Появление в виде всплывающего окна | Может повторно появиться как всплывающее окно, если подавление всплывающих окон установлено на false (или установлено на true для тихой отправки в Центр уведомлений) |
Не будет повторно появляться как всплывающее окно; данные текстового уведомления незаметно обновляются в Центре уведомлений. |
Пользователь уволен | Независимо от того, отклонил ли пользователь ваше предыдущее уведомление, уведомление об изменении всегда будет отправлено. | Если пользователь отклонил тост, обновление завершится ошибкой. |
Как правило, обновление полезно для ...
- Информация, которая часто меняется за короткий период времени и не требует пристального внимания пользователя.
- Незначительные изменения содержимого всплывающего уведомления (toast), например изменение 50% на 65%
Часто после завершения последовательности обновлений (например, когда файл загружен) мы рекомендуем выполнить замену в последнем шаге.
- Ваше окончательное уведомление, вероятно, имеет значительные изменения в макете, такие как удаление индикатора выполнения, добавление новых кнопок и т. д.
- Возможно, пользователь отклонил ожидающее уведомление о ходе выполнения, поскольку ему не интересно следить за его загрузкой, но по-прежнему хотят получать уведомление в виде всплывающего окна после завершения операции.
Связанные темы
- пример полного кода на сайте GitHub
- Документация по содержимому тостов
Windows developer