UI 자동화 컨트롤 패턴 개요

참고 항목

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

이 개요에서는 Microsoft UI 자동화 컨트롤 패턴을 소개합니다. 컨트롤 패턴은 컨트롤 형식 및 컨트롤의 모양에 관계없이 컨트롤의 기능을 분류하고 노출하는 방법을 제공합니다.

UI 자동화는 컨트롤 패턴을 사용하여 공통된 컨트롤 동작을 나타냅니다. 예를 들어, 호출할 수 있는 컨트롤(예: 단추)에 대해 Invoke 컨트롤 패턴을 사용하고 스크롤 막대가 있는 컨트롤(예: 목록 상자, 목록 뷰 또는 콤보 상자)에 대해 Scroll 컨트롤 패턴을 사용합니다. 각 컨트롤 패턴은 별도 기능을 나타내므로 컨트롤 패턴을 조합하여 특정 컨트롤에서 지원하는 기능의 전체 집합을 설명할 수 있습니다.

참고 항목

부모 컨트롤이 노출한 기능에 대한 UI(사용자 인터페이스)를 제공하는 하위 컨트롤을 사용하여 빌드된 집계 컨트롤은 각 하위 컨트롤과 정상적으로 연결된 모든 컨트롤 패턴을 구현해야 합니다. 따라서 이러한 동일한 컨트롤 패턴을 하위 컨트롤이 구현할 필요가 없습니다.

UI 자동화 컨트롤 패턴 구성 요소

컨트롤 패턴은 컨트롤에 있는 개별 기능 항목을 정의하는 데 필요한 메서드, 속성, 이벤트 및 관계를 지원합니다.

  • UI 자동화 요소와 부모, 자식, 형제 간의 관계는 UI 자동화 트리 내에서 해당 요소의 구조를 설명합니다.

  • 메서드는 UI 자동화 클라이언트가 컨트롤을 조작할 수 있도록 합니다.

  • 속성 및 이벤트는 컨트롤 상태에 대한 정보뿐만 아니라 컨트롤 패턴의 기능에 대한 정보를 제공합니다.

컨트롤 패턴이 UI에 연결된 방식은 인터페이스가 COM(구성 요소 개체 모델) 개체에 연결된 방식과 같습니다. COM에서, 개체를 쿼리하여 개체가 지원하는 인터페이스를 확인하고 이러한 인터페이스를 사용하여 기능에 액세스할 수 있습니다. UI 자동화에서, UI 자동화 클라이언트는 컨트롤이 지원하는 컨트롤 패턴을 확인하고 지원되는 컨트롤 패턴이 노출하는 속성, 메서드, 이벤트 및 구조를 통해 컨트롤과 상호 작용할 수 있습니다. 예를 들어, 여러 줄 편집 상자에 대해 UI 자동화는 IScrollProvider를 구현합니다. 클라이언트가 AutomationElementScrollPattern 컨트롤 패턴을 지원한다는 사실을 알고 있으면 클라이언트는 해당 컨트롤 패턴이 노출하는 속성, 메서드 및 이벤트를 사용하여 컨트롤을 조작하거나 컨트롤에 대한 정보에 액세스할 수 있습니다.

UI 자동화 공급자 및 클라이언트

UI 자동화 공급자는 컨트롤에서 지원하는 특정 기능에 대해 적절한 동작을 노출하는 컨트롤 패턴을 구현합니다.

UI 자동화 클라이언트는 UI 자동화 컨트롤 패턴 클래스의 메서드 및 속성에 액세스하고 이를 사용하여 UI에 대한 정보를 가져오거나 UI를 조작합니다. 이러한 컨트롤 패턴 클래스는 System.Windows.Automation 네임스페이스(예: InvokePatternSelectionPattern)에서 볼 수 있습니다.

클라이언트는 AutomationElement 메서드(예: AutomationElement.GetCurrentPropertyValue 또는 AutomationElement.GetCachedPropertyValue) 또는 CLR(공용 언어 런타임) 접근자를 사용하여 패턴의 UI 자동화 특성에 액세스합니다. 각 컨트롤 패턴 클래스에는 컨트롤 패턴을 식별하고 GetCachedPattern 또는 GetCurrentPattern에 매개 변수로 전달하여 AutomationElement에 대한 패턴을 검색할 수 있는 필드 멤버(예: InvokePattern.Pattern 또는 SelectionPattern.Pattern)가 있습니다.

동적 컨트롤 패턴

일부 컨트롤에서는 동일한 컨트롤 패턴의 집합이 항상 지원되지는 않습니다. 컨트롤 패턴은 UI 자동화 클라이언트에 사용할 수 있을 때 지원되는 것으로 간주됩니다. 예를 들어, 여러 줄 편집 상자를 사용하면 볼 수 있는 영역에 표시할 수 있는 것보다 많은 텍스트 줄이 포함되어 있는 경우에만 세로로 스크롤할 수 있습니다. 스크롤이 더 이상 필요하지 않을만큼 충분한 양의 텍스트가 제거되면 스크롤이 비활성화됩니다. 이 예제에서, ScrollPattern 컨트롤 패턴은 컨트롤의 현재 상태(편집 상자에 있는 텍스트의 양)에 따라 동적으로 지원됩니다.

컨트롤 패턴 클래스 및 인터페이스

다음 표에서는 UI 자동화 컨트롤 패턴에 대해 설명합니다. 또한 UI 자동화 클라이언트가 컨트롤 패턴에 액세스하는 데 사용하는 클래스와, UI 자동화 공급자가 이러한 컨트롤 패턴을 구현하는 데 사용하는 인터페이스를 나열하여 보여줍니다.

컨트롤 패턴 클래스 공급자 인터페이스 설명
DockPattern IDockProvider 도킹 컨테이너에서 도킹될 수 있는 컨트롤에 사용됩니다. 예를 들면, 도구 모음 또는 도구 팔레트입니다.
ExpandCollapsePattern IExpandCollapseProvider 확장하거나 축소할 수 있는 컨트롤에 사용됩니다. 예를 들면, 파일 메뉴와 같은 애플리케이션의 메뉴 항목입니다.
GridPattern IGridProvider 지정된 셀로 이동 및 크기 조정과 같은 표 기능을 지원하는 컨트롤에 사용됩니다. 예를 들면, Windows 탐색기의 큰 아이콘 보기 또는 Microsoft Word의 헤더 없는 단순 테이블입니다.
GridItemPattern IGridItemProvider 표 내에서 셀이 있는 컨트롤에 사용됩니다. 개별 셀은 GridItem 패턴을 지원해야 합니다. 예를 들면, Microsoft Windows 탐색기 자세히 보기의 각 셀입니다.
InvokePattern IInvokeProvider 호출할 수 있는 컨트롤(예: 단추)에 사용됩니다.
MultipleViewPattern IMultipleViewProvider 동일한 정보, 데이터 또는 자식 항목 집합의 여러 표현 간을 전환할 수 있는 컨트롤에 사용됩니다. 예를 들면, 데이터를 축소판, 타일, 아이콘, 목록 또는 자세히 보기로 사용할 수 있는 목록 뷰 컨트롤입니다.
RangeValuePattern IRangeValueProvider 컨트롤에 적용할 수 있는 값의 범위가 있는 컨트롤에 사용됩니다. 예를 들어, 연도를 나타내는 회전자 컨트롤의 범위는 1900 ~ 2010이고 월을 나타내는 다른 회전자 컨트롤의 범위는 1 ~ 12입니다.
ScrollPattern IScrollProvider 스크롤할 수 있는 컨트롤에 사용됩니다. 예를 들면, 컨트롤의 볼 수 있는 영역에 표시될 수 있는 것보다 많은 정보가 있는 경우 활성 상태의 스크롤 막대가 있는 컨트롤입니다.
ScrollItemPattern IScrollItemProvider 스크롤하는 목록의 개별 항목이 포함된 컨트롤에 사용됩니다. 예를 들면, 스크롤 목록의 개별 항목을 가진 목록 컨트롤(예: 콤보 상자 컨트롤)입니다.
SelectionPattern ISelectionProvider 선택 컨테이너 컨트롤에 사용됩니다. 예를 들면, 목록 상자 및 콤보 상자입니다.
SelectionItemPattern ISelectionItemProvider 목록 상자 및 콤보 상자와 같은 선택 컨테이너 컨트롤의 개별 항목에 사용됩니다.
TablePattern ITableProvider 헤더 정보 및 표가 있는 컨트롤에 사용됩니다. 예를 들면 Microsoft Excel 워크시트입니다.
TableItemPattern ITableItemProvider 테이블의 항목에 사용됩니다.
TextPattern ITextProvider 편집 컨트롤 및 텍스트 정보를 노출하는 문서에 사용됩니다.
TogglePattern IToggleProvider 상태를 전환할 수 있는 컨트롤에 사용됩니다. 예를 들면, 확인란 및 선택 가능한 메뉴 항목입니다.
TransformPattern ITransformProvider 크기 조정, 이동 및 회전할 수 있는 컨트롤에 사용됩니다. Transform 컨트롤 패턴은 디자이너, 폼, 그래픽 편집기 및 그리기 애플리케이션에서 일반적으로 사용됩니다.
ValuePattern IValueProvider 클라이언트가 값 범위를 지원하지 않는 컨트롤에 값을 설정하거나 가져올 수 있습니다. 예를 들면, 날짜 시간 선택입니다.
WindowPattern IWindowProvider Microsoft Windows 운영 체제의 기본 개념인 창 관련 정보를 공개합니다. 창에 해당하는 컨트롤의 예로는 최상위 애플리케이션 창(Microsoft Word, Microsoft Windows 탐색기 등), MDI(다중 문서 인터페이스) 자식 창 및 대화 상자가 있습니다.

참고 항목