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

참고 항목

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

이 항목에서는 MenuItem 컨트롤 형식에 대한 Microsoft UI 자동화 지원에 대한 정보를 제공합니다. 컨트롤의 Microsoft UI 자동화 트리 구조를 설명하고 MenuItem 컨트롤 형식에 필요한 속성과 컨트롤 패턴을 제공합니다.

메뉴 컨트롤을 사용하면 명령 및 이벤트 처리기와 연관된 요소를 계층적으로 구성할 수 있습니다. 일반적인 Microsoft Windows 애플리케이션에서 메뉴 모음에는 여러 메뉴 항목(예: 파일, 편집)이 포함되어 있으며 각 메뉴 항목에는 메뉴가 표시됩니다. 메뉴 하나에 메뉴 항목 컬렉션(예: 새로 만들기, 열기, 닫기)이 들어 있으며, 클릭하면 확장되어 추가 메뉴 항목이 표시되거나 특정 작업을 수행할 수 있습니다. 메뉴 항목은 메뉴, 메뉴 모음 또는 도구 모음에서 호스트될 수 있습니다.

다음 섹션에서는 MenuItem 컨트롤 형식에 필요한 UI 자동화 트리 구조, 속성, 컨트롤 패턴 및 이벤트를 정의합니다. UI 자동화 요구 사항은 WPF(Windows Presentation Foundation), Win32 또는 Windows Forms 여부에 관계없이 모든 목록 컨트롤에 적용됩니다.

필요한 UI 자동화 트리 구조

다음 표에서는 메뉴 항목 컨트롤과 관련된 UI 자동화 트리의 컨트롤 보기 및 콘텐츠 보기를 설명하고 각 보기에 포함될 수 있는 내용을 설명합니다. UI 자동화 트리에 대한 자세한 내용은 UI 자동화 트리 개요를 참조하세요.

컨트롤 뷰 콘텐츠 뷰
MenuItem "도움말"

  • Menu(도움말 메뉴 항목의 하위 메뉴)

    • MenuItem "도움말 항목"
    • MenuItem "메모장 정보"
MenuItem "도움말"

- MenuItem "도움말 항목"
- MenuItem "메모장 정보"

메뉴 항목 컨트롤의 컨트롤 보기에는 위에 표시된 UI 자동화 트리 구조가 있습니다. 도움말 메뉴 항목이 포함되어 있어 일반적인 메뉴에서 하위 메뉴 계층까지 구조를 보다 자세히 보여줍니다.

콘텐츠 보기의 경우 메뉴는 최종 사용자에게 의미 있는 정보를 전달하지 않기 때문에 UI 자동화 트리에 없습니다.

필요한 UI 자동화 속성

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

속성 설명
AutomationIdProperty 메모를 참조하세요. 이 속성의 값은 애플리케이션의 모든 컨트롤에서 고유해야 합니다.
BoundingRectangleProperty 메모를 참조하세요. 전체 컨트롤이 포함된 가장 바깥쪽 사각형입니다.
ClickablePointProperty 메모를 참조하세요. 경계 사각형이 없는 경우 지원됩니다. 경계 사각형 내의 일부 지점이 클릭 가능하지 않으며 특수화된 적중 테스트를 수행하는 경우 클릭 가능한 지점을 재정의하고 제공하세요.
IsKeyboardFocusableProperty 메모를 참조하세요. 컨트롤이 키보드 포커스를 받을 수 있으면 해당 컨트롤은 이 속성을 지원해야 합니다.
NameProperty 메모를 참조하세요. 메뉴 항목 컨트롤은 UI 자동화 트리의 콘텐츠 보기에 포함되며 이름으로 자체 레이블이 지정됩니다.
LabeledByProperty Null 레이블이 없습니다.
ControlTypeProperty MenuItem 이 값은 모든 UI 프레임워크에 대해 동일합니다.
LocalizedControlTypeProperty "menu item" MenuItem 컨트롤 형식에 해당하는 지역화된 문자열입니다.
IsContentElementProperty True 메뉴 항목 컨트롤은 UI 자동화 트리의 콘텐츠 보기에 포함되지 않습니다.
IsControlElementProperty True 메뉴 항목 컨트롤은 항상 UI 자동화 트리의 컨트롤 보기에 포함되어야 합니다.

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

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

컨트롤 패턴 속성 지원 주의
IExpandCollapseProvider 개체 컨트롤을 확장하거나 축소할 수 있는 경우 IExpandCollapseProvider를 구현합니다.
IInvokeProvider 개체 컨트롤이 단일 작업 또는 명령을 실행하는 경우 IInvokeProvider를 구현합니다.
IToggleProvider 개체 컨트롤이 설정하거나 해제할 수 있는 옵션을 나타내는 경우 IToggleProvider를 구현합니다.
ISelectionItemProvider 개체 컨트롤을 사용하여 메뉴 항목 간의 옵션 목록에서 선택하는 경우 ISelectionItemProvider를 구현합니다.

메뉴 항목용 UI 자동화 이벤트

다음 표에는 메뉴 항목 컨트롤과 관련된 Microsoft UI 자동화 이벤트가 나열되어 있습니다.

이벤트 지원 설명
InvokedEvent 개체 컨트롤에서 Invoke 컨트롤 패턴을 지원하는 경우 발생되어야 합니다.
ToggleStateProperty 속성 변경 이벤트. 개체 컨트롤에서 Toggle 컨트롤 패턴을 지원하는 경우 발생되어야 합니다.
ExpandCollapseStateProperty 속성 변경 이벤트. 개체 컨트롤에서 Expand Collapse 컨트롤 패턴을 지원하는 경우 발생되어야 합니다.
ElementSelectedEvent 개체 없음

필요한 UI 자동화 이벤트

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

UI 자동화 이벤트 지원/값 주의
InvokedEvent 개체 None
ElementAddedToSelectionEvent 개체 None
ElementRemovedFromSelectionEvent 개체 None
ElementSelectedEvent 개체 None
BoundingRectangleProperty 속성 변경 이벤트. Required None
IsOffscreenProperty 속성 변경 이벤트. Required None
IsEnabledProperty 속성 변경 이벤트. Required None
ExpandCollapseStateProperty 속성 변경 이벤트. 개체 None
ToggleStateProperty 속성 변경 이벤트. 개체 None
AutomationFocusChangedEvent Required None
StructureChangedEvent Required None

레거시 문제

Toggle 패턴은 Win32 메뉴 항목이 선택되고 Toggle 패턴을 지원하는 데 필요하다고 프로그래밍 방식으로 판단할 수 있는 경우에만 지원됩니다. Win32 메뉴 항목은 선택될 수 있는지 여부를 노출하지 않기 때문에 메뉴 항목이 선택되지 않으면 Invoke 패턴이 지원됩니다. Toggle 패턴만 지원하는 메뉴 항목에 대해서도 Invoke 패턴이 항상 지원되도록 하는 예외가 적용됩니다. Invoke 패턴을 지원했던(메뉴 항목이 선택 취소되었을 때) 요소가 이 패턴이 선택된 후에는 더 이상 지원하지 않게 되므로 클라이언트에서 혼동되지 않습니다.

참고 항목