Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Используя индикатор выполнения в уведомлении приложения, вы можете передать состояние длительных операций пользователю, например скачивание, отрисовку видео, цели упражнений и многое другое.
Индикатор выполнения в уведомлении приложения может быть "недетерминированным" (нет определенного значения, анимированные точки указывают, что операция происходит) или "детерминировано" (определенный процент строки заполнен, например 60%).
На рисунке ниже показан детерминированный индикатор прогресса со всеми соответствующими свойствами.
Дополнительные сведения об уведомлениях приложений см. в обзоре уведомлений о приложениях.
| Недвижимость | Тип | Обязательный | Описание |
|---|---|---|---|
| Заголовок | строка или BindableString | false | Возвращает или задает строку заголовка, которая может быть необязательной. Поддерживает привязку данных. |
| Ценность | double или AdaptiveProgressBarValue или BindableProgressBarValue | false | Возвращает или задает значение индикатора выполнения. Поддерживает привязку данных. Значение по умолчанию — 0. Может быть двойным в диапазоне от 0,0 до 1.0, AdaptiveProgressBarValue.Indeterminateили new BindableProgressBarValue("myProgressValue"). |
| ValueStringOverride | строка или BindableString | false | Возвращает или задает необязательную строку, отображаемую вместо процентной строки по умолчанию. Если это не указано, будет отображаться что-то вроде "70%". |
| Статус | строка или BindableString | истина | Возвращает или задает строку состояния (обязательно), которая отображается слева под индикатором выполнения. Эта строка должна отражать состояние операции, например "Скачивание..." или "Установка..." |
Используйте AppNotificationBuilder.AddProgressBar , чтобы добавить индикатор хода выполнения в уведомление. В следующем примере создается уведомление, показанное выше.
var builder = new AppNotificationBuilder()
.AddText("Downloading your weekly playlist...")
.AddProgressBar(new AppNotificationProgressBar()
.SetTitle("Weekly playlist")
.SetValue(0.6)
.SetValueStringOverride("15/26 songs")
.SetStatus("Downloading..."));
Для динамического обновления значений индикатора выполнения используйте привязку данных, как описано в следующем разделе.
Обновите индикатор прогресса с помощью привязки данных
Чтобы отобразить динамический индикатор выполнения, используйте привязку данных для обновления значений уведомлений без повторной отправки всего уведомления.
- Создайте содержимое уведомления с полями, привязанными к данным, вызвав
Bindметоды в AppNotificationProgressBar. - Назначьте тег (и при необходимости группу) для идентификации уведомления.
- Задайте начальные значения AppNotificationProgressData .
- Отображение уведомления путем вызова AppNotificationManager.Default.Show.
using Microsoft.Windows.AppNotifications;
using Microsoft.Windows.AppNotifications.Builder;
string tag = "weekly-playlist";
string group = "downloads";
var builder = new AppNotificationBuilder()
.AddText("Downloading your weekly playlist...")
.AddProgressBar(new AppNotificationProgressBar()
.BindTitle()
.BindValue()
.BindValueStringOverride()
.BindStatus());
var notification = builder.BuildNotification();
notification.Tag = tag;
notification.Group = group;
notification.Progress = new AppNotificationProgressData(1)
{
Title = "Weekly playlist",
Value = 0.6,
ValueStringOverride = "15/26 songs",
Status = "Downloading..."
};
AppNotificationManager.Default.Show(notification);
Затем обновите значения хода выполнения, вызвав AppNotificationManager.Default.UpdateAsync с новым экземпляром AppNotificationProgressData. Увеличьте порядковый номер, чтобы платформа знала, что это новое обновление.
using Microsoft.Windows.AppNotifications;
string tag = "weekly-playlist";
string group = "downloads";
var data = new AppNotificationProgressData(2)
{
Value = 0.7,
ValueStringOverride = "18/26 songs"
};
await AppNotificationManager.Default.UpdateAsync(data, tag, group);
Использование UpdateAsync , а не замена всего уведомления гарантирует, что уведомление остается в той же позиции в Центре уведомлений и не перемещается вверх или вниз. Метод возвращает NotificationUpdateResult, указывающий, успешно ли выполнено обновление или не удалось найти уведомление (возможно, пользователь отклонил его).
Элементы, поддерживающие привязку данных
Следующие элементы в уведомлениях приложений поддерживают привязку данных:
- Все свойства в AppNotificationProgressBar
- Свойство Text в текстовых элементах верхнего уровня
Обновление или замена уведомления
Вы можете заменить уведомление, отправив новое уведомление с тем же тегом и группой. В следующей таблице описывается разница между заменой и обновлением уведомления.
| Замена | Обновление | |
|---|---|---|
| Положение в Центре уведомлений | Перемещает уведомление в начало центра уведомлений. | Оставляет уведомление на месте в Центре уведомлений. |
| Изменение содержимого | Может полностью изменить все содержимое и макет уведомления. | Может изменять только свойства, поддерживающие привязку данных (индикатор выполнения и текст верхнего уровня). |
| Повторное появление в виде всплывающего окна | Может снова появиться как всплывающее окно, если SuppressPopupfalse (или установлено на true для автоматической отправки в Центр уведомлений). |
Не будет повторно появляться как всплывающее окно; Данные уведомления автоматически обновляются в Центре уведомлений. |
| Пользователь уволен | Уведомление о замене всегда отправляется независимо от того, отклонил ли пользователь предыдущее уведомление. | Если пользователь отклонил уведомление, обновление не удастся. |
Как правило, обновление полезно для информации, которая часто изменяется и не требует непосредственного внимания пользователя, например переход с 50% до 65%.
После завершения последовательности обновлений (например, скачивание файла) рекомендуется заменить уведомление на последний шаг, так как:
- Окончательное уведомление, вероятно, имеет другой макет, например удаление панели хода выполнения или добавление новых кнопок.
- Возможно, пользователь отклонил уведомление о ходе выполнения, но по-прежнему хочет увидеть всплывающее окно после завершения операции.
См. также
Windows developer