Реализовать модель элемента управления прокрутки автоматизации пользовательского интерфейса

Примечание.

Эта документация предназначена для разработчиков .NET Framework, желающих использовать управляемые классы автоматизации пользовательского интерфейса, определенные в пространстве имен System.Windows.Automation. Последние сведения об автоматизации пользовательского интерфейса см. в статье API автоматизации Windows. Автоматизация пользовательского интерфейса.

В этой статье приводятся рекомендации и конвенции по реализации IScrollProvider, включая информацию о событиях и свойствах. Ссылки на дополнительные материалы перечислены в конце раздела.

Шаблон элемента управления ScrollPattern используется для поддержки элемента управления, который выступает в качестве прокручиваемого контейнера для коллекции дочерних объектов. Этому элементу управления не обязательно использовать полосы прокрутки для поддержки функции прокрутки, хотя обычно это делается.

Элемент управления прокрутки без полос прокрутки. Пример элемента управления прокрутки, который не использует полосы прокрутки

Примеры элементов управления, реализующих данный шаблон элемента управления, см. в разделе Control Pattern Mapping for UI Automation Clients.

Правила и соглашения реализации

При реализации шаблона элемента управления Scroll обратите внимание на следующие правила и соглашения.

  • Дочерние компоненты данного контрола должны реализовывать IScrollItemProvider.

  • Полосы прокрутки контейнерного элемента управления не поддерживают шаблон элемента управления ScrollPattern . Вместо него они должны поддерживать шаблон элемента управления RangeValuePattern .

  • Если прокрутка измеряется в процентах, все значения или величины, связанные с градуировкой шкалы прокрутки, должны быть нормализованы в диапазоне от 0 до 100.

  • СвойстваHorizontallyScrollableProperty и VerticallyScrollableProperty не зависят от IsEnabledProperty.

  • Если свойство HorizontallyScrollableProperty = false , то свойство HorizontalViewSizeProperty должно иметь значение 100 %, а свойство HorizontalScrollPercentProperty должно иметь значение NoScroll. Аналогично, если свойство VerticallyScrollableProperty = false , то свойство VerticalViewSizeProperty должно иметь значение 100 %, а свойство VerticalScrollPercentProperty должно иметь значение NoScroll. Это позволяет клиенту автоматизации пользовательского интерфейса использовать эти значения свойств в методеSetScrollPercent, избегая состояния гонки, если направление, которое клиент не заинтересован в прокрутке, активируется.

  • HorizontalScrollPercent зависит от региона. Установка HorizontalScrollPercent = 100.0 должна устанавливать расположение прокрутки элемента управления в крайнюю правую позицию, что соответствует языкам таким, как английский, где чтение осуществляется слева направо. И наоборот, для таких языков, как арабский, где чтение выполняется справа налево, установка HorizontalScrollPercent = 100.0 должна устанавливать расположение прокрутки в самую левую позицию.

Обязательные члены для IScrollProvider

Следующие свойства и методы обязательны для реализации IScrollProvider.

Обязательный член Тип члена Примечания.
HorizontalScrollPercent Свойство нет
VerticalScrollPercent Свойство нет
HorizontalViewSize Свойство нет
VerticalViewSize Свойство нет
HorizontallyScrollable Свойство нет
VerticallyScrollable Свойство нет
Scroll Способ нет
SetScrollPercent Способ нет

Этот шаблон элемента управления не имеет связанных событий.

Исключения

Поставщики должны выбрасывать следующие исключения.

Тип исключения Состояние
ArgumentException МетодScroll вызывает данное исключение, если элемент управления поддерживает значения SmallIncrement исключительно для горизонтальной или вертикальной прокрутки, но передано значение LargeIncrement .
ArgumentException МетодSetScrollPercent вызывает данное исключение, если передается значение, которое невозможно преобразовать к типу double.
ArgumentOutOfRangeException МетодSetScrollPercent создает исключение, если переданное значение меньше 0 или больше 100 (за исключением -1, что эквивалентно NoScroll).
InvalidOperationException Оба метода, Scroll и SetScrollPercent , вызывают это исключение при попытке прокрутки в неподдерживаемом направлении.

См. также