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

Примечание.

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

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

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

Scroll control without scrollbars. Пример элемента управления прокрутки, который не использует полосы прокрутки

Примеры элементов управления, реализующих данный шаблон элемента управления, см. в разделе 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 Способ нет

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

Исключения

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

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

См. также