MenuItem 控件类型

本主题提供有关 Microsoft UI 自动化对 MenuItem 控件类型的支持的信息。

使用菜单控件,可以对与命令和事件处理程序相关联的元素以分层方式进行组织。 在典型的 Windows 应用程序中,菜单栏包含多个 (菜单项,例如“文件”、“编辑”“窗口) ”,并且每个菜单项显示一个菜单。 菜单包含一系列菜单项(如“新建” 、“打开” 和“关闭” ),可以通过展开这些菜单项来显示额外的菜单项,或者通过单击它们来执行特定的操作。

以下部分定义 MenuItem 控件类型所需的UI 自动化树结构、属性、控件模式和事件。 UI 自动化要求适用于 UI 框架/平台集成UI 自动化控件类型和控件模式支持的所有菜单项控件。

本主题包含以下各节:

典型树结构

下表描述了与菜单项控件相关的UI 自动化树的典型控件和内容视图,并描述了每个视图中可以包含的内容。 有关 UI 自动化树的详细信息,请参阅 UI 自动化树概述

控件视图 内容视图
  • MenuItem “帮助”
    • “帮助”菜单项的菜单 (子菜单)
      • MenuItem“帮助主题”
      • MenuItem “关于 Notepad”
  • MenuItem “帮助”
    • MenuItem“帮助主题”
    • MenuItem “关于 Notepad”

 

菜单项控件的控件视图具有如上所示的 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 控件模式的菜单项 (取消选中菜单项时) 在选中该模式时不再支持该模式,客户端就不会感到困惑。

概念性

UI 自动化控件类型概述

UI 自动化概述