Элементы управления "Ход выполнения"
Элемент управления хода выполнения предоставляет пользователю обратную связь о том, что выполняется длительная операция. Это может означать, что пользователь не может взаимодействовать с приложением, когда индикатор хода выполнения отображается, а также может указывать время ожидания в зависимости от используемого индикатора.
Типы хода выполнения
Существует два элемента управления, чтобы показать пользователю, что выполняется операция , либо через ProgressBar, либо через ProgressRing. И ProgressBar, и ProgressRing имеют два состояния, которые обозначают, может ли пользователь взаимодействовать с приложением.
- Состояние determinate для индикаторов ProgressBar и ProgressRing обозначает процент завершения задачи. Этот индикатор следует использовать, когда длительность операции известна, но ее выполнение не должно блокировать взаимодействие пользователя с приложением.
- Состояние indeterminate индикатора ProgressBar обозначает, что операция выполняется, но не блокирует взаимодействие пользователя с приложением, и продолжительность задачи неизвестна.
- Состояние indeterminate индикатора ProgressRing обозначает, что операция выполняется и блокирует взаимодействие пользователя с приложением, а продолжительность задачи неизвестна.
Кроме того, элемент управления "Ход выполнения" предназначен только для чтения. С ним нельзя взаимодействовать. Это означает, что пользователь не может вызывать или использовать эти элементы управления напрямую.
Элемент управления | Отображать |
---|---|
Неопределенное состояние ProgressBar | |
Определенное состояние ProgressBar | |
Неопределенное состояние ProgressRing | |
ProgressRing с определенным состоянием |
Выбор правильного элемента управления
Это не всегда очевидно, какой элемент управления или какое состояние (детерминированное и неопределенное) использовать при попытке показать что-то происходит. Иногда задача достаточно очевидна и совсем не требует индикации выполнения, но иногда даже при использовании индикатора выполнения требуется еще и текстовая строка для объяснения того, какая операция выполняется.
ProgressBar
Обладает ли элемент управления определенной продолжительностью или можно ли спрогнозировать завершение операции?
Используйте детерминированный индикатор ProgressBar, а затем обновите процент или значение соответствующим образом.
Может ли пользователь продолжить использование приложения, не следя за ходом выполнения операции?
Когда используется ProgressBar, взаимодействие происходит немодальным образом; обычно это означает, что действия пользователя не заблокированы до завершения этой операции и он может продолжить использование приложения другими способами, пока операция выполняется.
Ключевые слова
Если ваша операция связана с этими ключевыми словами или если вы показываете подобный текст вместе с индикацией хода выполнения, которая соответствует этим ключевым словам, рекомендуется использовать ProgressBar:
- Загрузка...
- Получение
- Обработка...
ProgressRing
Вынуждает ли операция пользователя ожидать ее завершения, чтобы продолжить?
Если операция требует, чтобы взаимодействие с приложением полностью или по большей части прекратилось до ее завершения, более подходящим вариантом будет ProgressRing с неопределенным состоянием.
- Обладает ли элемент управления определенной продолжительностью или можно ли спрогнозировать завершение операции?
Используйте ProgressRing c определенным состоянием, если вы хотите, чтобы визуальный элемент отображался кольцом, а не полосой, на котором отображается актуальный процент выполнения или значение.
Ожидает ли приложение, что пользователь завершит задачу?
Если да, используйте ProgressRing с неопределенным состоянием, поскольку этот индикатор предназначен для отображения пользователю неизвестного времени ожидания.
Ключевые слова
Если ваша операция связана с этими ключевыми словами или если вы показываете подобный текст вместе с индикацией хода выполнения, которая соответствует этим ключевым словам, рекомендуется использовать ProgressRing:
- Обновление
- Вход...
- Подключение...
Не требуется никаких признаков хода выполнения
Нужно ли пользователю знать информацию о выполняемых действиях?
Например, если приложение скачивает что-либо в фоновом режиме, а пользователь не начинал скачивание, то ему необязательно знать о нем.
Выполняется ли операция в фоновом режиме, не блокируя деятельность пользователя, и представляет ли она какой-то реальный интерес для пользователя?
Используйте текст, когда приложение выполняет задачи, которые не должны отображаться все время, но вам все равно нужно показать состояние.
Важно ли пользователю только то, что операция выполнена?
Иногда лучше показать уведомление только после выполнения операции или сразу же предоставить визуальное указание, что операция выполнена, а завершающие действия выполнить в фоновом режиме.
Рекомендации по управлению ходом выполнения
Иногда лучше увидеть визуальные примеры того, где и когда следует использовать различные индикаторы хода выполнения:
ProgressBar — определенное состояние
Первым примером является детерминированный индикатор ProgressBar. Когда длительность операции известна, при установке, скачивании, настройке и т. д. Детерминированное значение ProgressBar лучше всего.
ProgressBar — неопределенное состояние
Если не известно, сколько времени займет операция, используйте неопределенную панель ProgressBar. При заполнении виртуализированного списка и создании плавного визуального перехода между неопределенным элементом для определения ProgressBar также хорошо.
Выполняется ли операция в виртуализированной коллекции?
Если это так, не помещайте индикатор хода выполнения в каждый элемент списка по мере их появления. Вместо этого используйте ProgressBar и поместите его в начало коллекции загруженных элементов, чтобы показать, что элементы извлекаются.
ProgressRing — неопределенное состояние
Неопределенное состояние ProgressRing используется, когда любое дальнейшее взаимодействие пользователя с приложением прекращается или приложение ожидает ввода пользователя для продолжения работы. "Вход..." является идеальным сценарием для использования ProgressRing; пользователь не может продолжить использование приложения, пока вход не выполнен.
ProgressRing с определенным состоянием
Если кольцевой вид визуального элемента является предпочтительным и продолжительность операции известна, например во время установки, загрузки, настройки и т. п., лучше всего использовать ProgressRing с определенным состоянием.
UWP и WinUI 2
Внимание
Сведения и примеры в этой статье оптимизированы для приложений, использующих пакет SDK для приложений Windows и WinUI 3, но обычно применимы к приложениям UWP, использующим WinUI 2. См. справочник по API UWP для конкретных сведений и примеров платформы.
В этом разделе содержатся сведения, необходимые для использования элемента управления в приложении UWP или WinUI 2.
Элементы управления прогрессом для приложений UWP включены в состав WinUI 2. Дополнительные сведения, включая инструкции по установке, см. в статье WinUI 2. API для этого элемента управления существуют как в пространствах имен Windows.UI.Xaml.Controls, так и в пространствах имен Microsoft.UI.Xaml.Controls.
- API UWP: класс ProgressBar, свойство IsIndeterminate, класс ProgressRing, свойство IsActive
- Apis WinUI 2: класс ProgressBar, свойство IsIndeterminate, класс ProgressRing, свойство IsActive
- Откройте приложение коллекции WinUI 2 и просмотрите ProgressBar или ProgressRing. Приложения из коллекции WinUI 2 включают интерактивные примеры большинства элементов управления, возможностей и функций WinUI 2. Получите приложение из Microsoft Store или получите исходный код в GitHub.
Мы рекомендуем использовать последнюю версию WinUI 2 , чтобы получить самые актуальные стили, шаблоны и функции для всех элементов управления. WinUI 2.2 или более поздней версии содержит новый шаблон для этого элемента управления, использующего округленные углы. Дополнительные сведения см. в разделе о радиусе угла.
Чтобы использовать код в этой статье с WinUI 2, используйте псевдоним в XAML (мы используем muxc
), чтобы представить API библиотеки пользовательского интерфейса Windows, включенные в проект. Дополнительные сведения см. в статье "Начало работы с WinUI 2 ".
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
<muxc:ProgressBar />
<muxc:ProgressRing />
Создание элемента управления хода выполнения
- Важные API: класс ProgressBar, свойство IsIndeterminate, класс ProgressRing, свойство IsActive
Откройте приложение коллекции WinUI 3 и просмотрите ProgressBar или ProgressRing.
Приложение коллекции WinUI 3 включает интерактивные примеры большинства элементов управления, функций и функций WinUI 3. Получение приложения из Microsoft Store или получение исходного кода на GitHub
Оба элемента управления прогрессом довольно просты; но некоторые визуальные функции элементов управления не очевидны для настройки.
Определение размера ProgressRing
ProgressRing может быть размером как нужно, но может быть только меньше 20x20epx. Чтобы изменить размер ProgressRing, необходимо задать ее высоту и ширину. Если задана только высота или ширина, элемент управления предполагает минимальный размер (20x20epx) — и наоборот, если высота и ширина имеют два разных размера, предполагается, что меньше размеров. Для обеспечения соответствия ProgressRing вашим потребностям устанавливайте одинаковые значения для длины и ширины.
<ProgressRing Height="100" Width="100"/>
Чтобы сделать ProgressRing видимым и анимировать, необходимо задать для свойства IsActive значение true:
<ProgressRing IsActive="True" Height="100" Width="100"/>
progressRing.IsActive = true;
Раскрашивание индикаторов хода выполнения
По умолчанию основной цвет элементов управления ходом выполнения устанавливается на цвет акцента системы. Чтобы переопределить эту кисть, просто измените свойство переднего плана в любом элементе управления.
<ProgressRing IsActive="True" Height="100" Width="100" Foreground="Blue"/>
<ProgressBar Width="100" Foreground="Green"/>
Изменение цвета переднего плана для ProgressRing приведет к изменению цвета заполнения кольца. Свойство переднего плана для ProgressBar изменит цвет заливки панели, чтобы изменить незаполненную часть панели, просто переопределите фоновое свойство.
Отображение курсора ожидания
Иногда лучше показать только кратковременный курсор ожидания, когда приложению или операции требуется время на размышления, а вам необходимо показать пользователю, что с приложением или его областью, где находится курсор ожидания, не следует взаимодействовать, пока курсор ожидания не исчезнет.
Window.Current.CoreWindow.PointerCursor = new Windows.UI.Core.CoreCursor(Windows.UI.Core.CoreCursorType.Wait, 10);
Получение кода примера
- Пример коллекции WinUI. Просмотрите все элементы управления XAML в интерактивном формате.
Связанные статьи
Windows developer