다음을 통해 공유


List 컨트롤 형식에 대한 UI 자동화 지원

참고 항목

이 설명서는 System.Windows.Automation 네임스페이스에 정의된 관리되는 UI 자동화 클래스를 사용하려는 .NET Framework 개발자를 위한 것입니다. UI 자동화에 대한 최신 정보는 Windows 자동화 API: UI 자동화를 참조하세요.

이 항목에서는 List 컨트롤 형식에 대한 UI 자동화 지원에 대한 정보를 제공합니다. UI 자동화에서 컨트롤 형식은 ControlTypeProperty 속성을 사용하기 위해 컨트롤이 충족해야 하는 조건 집합입니다. 조건에는 UI 자동화 트리 구조, UI 자동화 속성 값, 컨트롤 패턴에 대한 특정 지침이 포함됩니다.

List 컨트롤 형식은 항목의 플랫 그룹 구성 방법을 제공하며 사용자가 하나 이상의 이러한 항목을 선택할 수 있도록 합니다. List 컨트롤 형식에서는 포함될 수 있는 자식 요소 형식에 대한 제한이 엄격하지 않습니다. 따라서 UI 자동화 공급자가 선택 항목 컨테이너에 대해 잘 알려진 요소를 지원할 수 있습니다.

다음 섹션의 UI 자동화 요구 사항은 WPF(Windows Presentation Foundation), Win32 또는 Windows Forms 여부에 관계 없이 목록 컨트롤 형식을 구현하는 모든 컨트롤에 적용됩니다. 목록 컨테이너 컨트롤은 List 컨트롤 형식을 구현하는 컨트롤의 예입니다.

필요한 UI 자동화 트리 구조

다음 표에서는 목록 컨트롤과 관련된 UI 자동화 트리의 두 뷰를 보여 주고 각 뷰에 포함될 수 있는 내용에 대해 설명합니다. 컨트롤 뷰에는 컨트롤인 요소만 포함되며, 콘텐츠 뷰에서는 트리와 중복되는 정보가 제거됩니다. 예를 들어, 콤보 상자에 레이블을 지정하는 데 사용되는 텍스트 컨트롤은 ComboBox NameProperty로 노출됩니다. 하지만 텍스트 컨트롤이 컨트롤 뷰에서 이 방법으로 이미 노출되므로 두 번 노출시킬 필요는 없습니다. 따라서 콘텐츠 보기에서 제거됩니다. UI 자동화 트리에 대한 자세한 내용은 UI 자동화 트리 개요를 참조하세요.

컨트롤 뷰 콘텐츠 뷰
컨트롤에 해당하는 요소를 포함합니다. 최종 사용자에게 의미 있는 가장 작은 정보 집합에서 보조 기술이 작동되도록 트리에서 중복되는 정보를 제거합니다.
List

- DataItem(0개 이상)
- ListItem(0개 이상)
- Group(0개 이상)
- ScrollBar(0, 1 또는 2개)
List

- DataItem(0개 이상)
- ListItem(0개 이상)
- Group(0개 이상)

List 컨트롤 형식(예: 목록 컨트롤)을 구현하는 컨트롤의 컨트롤 뷰는 다음과 같이 구성되어 있습니다.

  • 목록 컨트롤 내에 있는 0개 이상의 항목(항목 개수는 List Item 또는 Data Item 컨트롤 형식에 따라 다름)

  • 목록 컨트롤 내에서 0개 이상의 그룹 컨트롤

  • 0, 1 또는 2개의 스크롤 막대 컨트롤

List 컨트롤 형식(예: 목록 컨트롤)을 구현하는 컨트롤의 콘텐츠 뷰는 다음과 같이 구성되어 있습니다.

  • 목록 컨트롤 내에 있는 0개 이상의 항목(항목 개수는 List Item 또는 Data Item 컨트롤 형식에 따라 다름)

  • 목록 컨트롤 내에서 0개 이상의 그룹

함께 그룹화된 항목 외에 계층 관계가 있는 항목은 목록 컨트롤 항목에 포함되지 않아야 합니다. UI 자동화 트리에 항목의 자식이 있는 경우 목록 컨테이너는 트리 컨트롤 형식을 기반으로 해야 합니다.

목록 컨트롤 내에서 선택 가능한 항목은 목록 컨트롤의 UI 자동화 트리에 있는 하위 항목에서 사용할 수 있습니다. 목록 컨트롤 내의 모든 항목은 같은 선택 그룹에 속해야 합니다. 목록에서 선택 가능한 항목은 DataItem이 아닌 ListItem 컨트롤 형식으로 노출되어야 합니다.

필요한 UI 자동화 속성

다음 표에는 목록 컨트롤과 특히 관련된 값 또는 정의가 있는 UI 자동화 속성이 나열되어 있습니다. UI 자동화 속성에 대한 자세한 내용은 클라이언트용 UI 자동화 속성을 참조하세요.

UI 자동화 속성 주의
AutomationIdProperty 메모를 참조하세요. 이 속성의 값은 애플리케이션의 모든 컨트롤에서 고유해야 합니다.
BoundingRectangleProperty 메모를 참조하세요. 전체 컨트롤이 포함된 가장 바깥쪽 사각형입니다.
ClickablePointProperty 메모를 참조하세요. 목록 컨트롤에 클릭 가능한 지점(클릭하여 목록에서 포커스를 받을 수 있도록 하는 지점)이 있는 경우, 해당 지점은 이 속성을 통해 노출되어야 합니다.

IsOffScreen 속성의 값이 true이면 NoClickablePointException이 발생됩니다.
IsKeyboardFocusableProperty 메모를 참조하세요. 컨트롤이 키보드 포커스를 받을 수 있으면 해당 컨트롤은 이 속성을 지원해야 합니다.
NameProperty 메모를 참조하세요. 목록 컨트롤의 Name 속성 값은 사용자에게 선택하라고 요청하는 옵션의 범주를 전달해야 합니다. 이 속성은 일반적으로 정적 텍스트 레이블에서 이름을 가져옵니다. 정적 텍스트 레이블이 없는 경우 애플리케이션 개발자 Name 속성의 값을 노출해야 합니다.

컨트롤이 다른 컨트롤의 하위 트리 내에 사용되는 경우에만 이 속성이 목록 컨트롤에 필요하지 않습니다.
LabeledByProperty 메모를 참조하세요. 정적 텍스트 레이블이 있는 경우 이 속성은 해당 컨트롤에 대한 참조를 노출해야 합니다.
ControlTypeProperty List 이 값은 모든 UI 프레임워크에 대해 동일합니다.
LocalizedControlTypeProperty "list" List 컨트롤 형식에 해당하는 지역화된 문자열입니다.
IsContentElementProperty True 목록 컨트롤은 항상 UI 자동화 트리의 콘텐츠 뷰에 포함됩니다.
IsControlElementProperty True 목록 컨트롤은 항상 UI 자동화 트리의 컨트롤 뷰에 포함됩니다.
IsKeyboardFocusableProperty True 컨테이너가 키보드 입력을 허용할 수 있으면 이 속성 값은 true여야 합니다.
HelpTextProperty 메모를 참조하세요. 목록 컨트롤의 도움말 텍스트는 사용자에게 옵션 목록에서 선택하라는 요청이 표시되는 이유를 설명합니다. 예: "이 목록에서 항목을 선택하면 모니터의 디스플레이 해상도가 설정됩니다."

필요한 UI 자동화 컨트롤 패턴 및 속성

다음 표에는 목록 컨트롤에서 지원해야 하는 UI 자동화 컨트롤 패턴이 나와 있습니다. 컨트롤 패턴에 대한 자세한 내용은 UI Automation Control Patterns Overview를 참조하세요.

컨트롤 패턴/패턴 속성 지원/값 주의
ISelectionProvider Required 컨트롤에 포함된 항목 간에 선택 상태가 유지되면 List 컨트롤 형식을 지원하는 모든 컨트롤은 ISelectionProvider 를 구현해야 합니다. 항목을 컨테이너 내에서 선택할 수 없는 경우 Group 컨트롤 형식을 사용해야 합니다.
IsSelectionRequired 개체 목록 컨트롤에서 항상 항목을 선택할 필요는 없습니다.
CanSelectMultiple 개체 목록 컨트롤은 단일 또는 다중 선택 컨테이너입니다.
IScrollProvider 개체 컨테이너의 항목을 스크롤할 수 있는 경우에 이 컨트롤 패턴을 구현합니다.
IGridProvider 개체 항목별로 항목에서 눈금 탐색을 사용할 수 있어야 하는 경우 이 패턴을 구현합니다.
IMultipleViewProvider 개체 컨트롤이 컨테이너에 있는 항목의 여러 뷰를 지원할 수 있는 경우 이 컨트롤 패턴을 구현합니다.
ITableProvider 안 함 ITableProvider 가 List 컨트롤 형식에 지원되지 않습니다. 컨트롤에서 이 컨트롤 패턴을 지원해야 하는 경우 컨트롤은 Data Grid 컨트롤 형식을 기반으로 해야 합니다.

필요한 UI 자동화 이벤트

다음 표에는 모든 목록 컨트롤에서 지원해야 하는 UI 자동화 이벤트가 나와 있습니다. 이벤트에 대한 자세한 내용은 UI Automation Events Overview를 참조하세요.

UI 자동화 이벤트 지원/값 주의
InvalidatedEvent 개체 None
LayoutInvalidatedEvent 개체 None
BoundingRectangleProperty 속성 변경 이벤트. Required None
IsOffscreenProperty 속성 변경 이벤트. Required None
IsEnabledProperty 속성 변경 이벤트. Required None
CurrentViewProperty 속성 변경 이벤트. 개체 None
HorizontallyScrollableProperty 속성 변경 이벤트. 개체 None
HorizontalScrollPercentProperty 속성 변경 이벤트. 개체 None
HorizontalViewSizeProperty 속성 변경 이벤트. 개체 None
VerticalScrollPercentProperty 속성 변경 이벤트. 개체 None
VerticallyScrollableProperty 속성 변경 이벤트. 개체 None
VerticalViewSizeProperty 속성 변경 이벤트. 개체 None
AutomationFocusChangedEvent Required None
StructureChangedEvent Required None

참고 항목