MenuItem 控件类型
本主题提供有关 Microsoft UI 自动化对 MenuItem 控件类型的支持的信息。
使用菜单控件,可以对与命令和事件处理程序相关联的元素以分层方式进行组织。 在典型的 Windows 应用程序中,菜单栏包含多个 (菜单项,例如“文件”、“编辑”和“窗口) ”,并且每个菜单项显示一个菜单。 菜单包含一系列菜单项(如“新建” 、“打开” 和“关闭” ),可以通过展开这些菜单项来显示额外的菜单项,或者通过单击它们来执行特定的操作。
以下部分定义 MenuItem 控件类型所需的UI 自动化树结构、属性、控件模式和事件。 UI 自动化要求适用于 UI 框架/平台集成UI 自动化控件类型和控件模式支持的所有菜单项控件。
本主题包含以下各节:
典型树结构
下表描述了与菜单项控件相关的UI 自动化树的典型控件和内容视图,并描述了每个视图中可以包含的内容。 有关 UI 自动化树的详细信息,请参阅 UI 自动化树概述。
控件视图 | 内容视图 |
---|---|
|
|
菜单项控件的控件视图具有如上所示的 UI 自动化树结构。 请注意,已添加菜单栏上的 “帮助” 菜单项,以更好地说明结构。
对于内容视图,菜单在UI 自动化树中不存在,因为它不会向最终用户传达有意义的信息。
相关属性
下表列出了值或定义与 MenuItem 控件类型特别相关的UI 自动化属性。 有关UI 自动化属性的详细信息,请参阅从UI 自动化元素检索属性。
UI 自动化属性 | 值 | 说明 |
---|---|---|
UIA_AutomationIdPropertyId | 请参阅注释。 | 此属性的值在UI 自动化树的原始视图中的所有对等元素中必须是唯一的。 如果已知该元素在用户界面的不同实例之间保持一致,请为菜单项分配 AutomationId 属性。 如果菜单项是动态填充的且不可预测,请将 AutomationId 属性留空。 |
UIA_BoundingRectanglePropertyId | 请参阅注释。 | 包含整个控件的最外层矩形。 |
UIA_ClickablePointPropertyId | 请参阅注释。 | 如果存在边界矩形,则受支持。 如果边界矩形中的每个点都不可单击,并且元素执行专门的命中测试,请重写并提供一个可单击的点。 |
UIA_ControlTypePropertyId | MenuItem | |
UIA_IsContentElementPropertyId | TRUE | 菜单项控件始终包含在UI 自动化树的内容视图中。 |
UIA_IsControlElementPropertyId | TRUE | 菜单项控件始终包含在UI 自动化树的控件视图中。 |
UIA_IsKeyboardFocusablePropertyId | 请参阅注释。 | 如果该控件可以接收键盘焦点,则它必须支持此属性。 |
UIA_LocalizedControlTypePropertyId | 请参阅注释。 | 对应于 MenuItem 控件类型的本地化字符串。 en-US 或英语 (美国) 的默认值为“菜单项”。 |
UIA_NamePropertyId | 请参阅注释。 | 菜单项控件的名称是用于标记它的文本。 |
所需的控件模式
下表列出了需要由菜单项控件支持的 UI 自动化控件模式。 有关控件模式的详细信息,请参阅 UI Automation Control Patterns Overview。
控件模式 | 支持 | 说明 |
---|---|---|
IExpandCollapseProvider | 依赖的对象 | 如果控件可以展开或折叠,则实现 IExpandCollapseProvider。 |
IInvokeProvider | 依赖的对象 | 如果控件执行单个操作或命令,则实现 IInvokeProvider。 |
ISelectionItemProvider | 依赖的对象 | 如果控件用于从菜单项之间的选项列表中进行选择,请实现 ISelectionItemProvider。 |
IToggleProvider | 依赖的对象 | 如果控件表示可以打开或关闭的选项,请实现 IToggleProvider。 |
必需事件
下表列出了菜单项控件需要支持的UI 自动化事件。 有关事件的详细信息,请参阅 F:System.Windows.Automation.AutomationElementIdentifiers.IsEnabledProperty。
UI 自动化事件 | 说明 |
---|---|
UIA_AutomationFocusChangedEventId | |
UIA_BoundingRectanglePropertyId 属性更改事件。 | |
UIA_ExpandCollapseExpandCollapseStatePropertyId 属性更改事件。 | 如果控件支持 ExpandCollapse 控件模式,则它必须支持此事件。 |
UIA_Invoke_InvokedEventId | 如果控件支持 Invoke 控件模式,则必须支持此事件。 |
UIA_IsEnabledPropertyId 属性更改事件。 | 如果控件支持 IsEnabled 属性,它必须支持此事件。 |
UIA_IsOffscreenPropertyId 属性更改事件。 | 如果控件支持 IsOffscreen 属性,则必须支持此事件。 |
UIA_SelectionItem_ElementAddedToSelectionEventId | 如果控件支持 SelectionItem 控件模式,则必须支持此事件。 |
UIA_SelectionItem_ElementRemovedFromSelectionEventId | 如果控件支持 SelectionItem 控件模式,则必须支持此事件。 |
UIA_SelectionItem_ElementSelectedEventId | 如果控件支持 SelectionItem 控件模式,则必须支持此事件。 |
UIA_StructureChangedEventId | |
UIA_ToggleToggleStatePropertyId 属性更改事件。 | 如果控件支持 切换 控件模式,则它必须支持此事件。 |
遗留问题
对于 Microsoft Win32 菜单项,仅当选中菜单项时, 才支持切换 控件模式,并且可以通过编程方式确定是否需要对切换控件模式的支持。 由于 Win32 菜单项不公开它是否可以检查,因此,如果未选中菜单项,则支持 Invoke 控件模式。 始终支持 Invoke 控件模式,即使是仅支持切换控件模式所需的菜单项也是如此。 这样,当支持 Invoke 控件模式的菜单项 (取消选中菜单项时) 在选中该模式时不再支持该模式,客户端就不会感到困惑。
相关主题
-
概念性