UI 自动化对 MenuItem 控件类型的支持
更新:2007 年 11 月
本主题介绍 Microsoft UI 自动化对 MenuItem 控件类型的支持。它介绍了该控件的 Microsoft UI 自动化树结构,并提供了 MenuItem 控件类型所需的属性和控件模式。
使用菜单控件,可以对那些与命令和事件处理程序相关联的元素以分层方式进行组织。在典型的 Microsoft Windows 应用程序中,菜单栏包含多个菜单项(如“文件”、“编辑”和“窗口”),单击每个菜单项都可显示一个菜单。菜单包含一个菜单项集合(如“新建”、“打开”和“关闭”),可以通过展开这些菜单项来显示其他菜单项,或者通过单击它们来执行特定的操作。
以下几节定义了 MenuItem 控件类型必需的 UI 自动化树结构、属性、控件模式和事件。UI 自动化的要求适用于所有列表控件,无论控件是 Windows Presentation Foundation (WPF)、Win32 还是 Windows 窗体。
本主题包括下列各节。
- 必需的 UI 自动化树结构
- 必需的 UI 自动化属性
- 必需的 UI 自动化控件模式
- 菜单项的 UI 自动化事件
- 必需的 UI 自动化事件
- 旧版问题
- 相关主题
必需的 UI 自动化树结构
下表描述了与菜单项控件有关的 UI 自动化树的控件视图和内容视图,以及每个视图中可包含的内容。有关 UI 自动化树的更多信息,请参见 UI 自动化树概述。
控件视图 |
内容视图 |
---|---|
|
|
菜单项控件的控件视图具有如上所示的 UI 自动化树。请注意,为了更好地阐明该结构,已在菜单栏上添加了“帮助”的菜单项。
对于内容视图,UI 自动化树中没有菜单,因为它不向最终用户传递有意义的信息。
必需的 UI 自动化属性
下表列出了值或定义与菜单项控件密切相关的 UI 自动化属性。有关 UI 自动化属性的更多信息,请参见客户端的 UI 自动化属性。
属性 |
值 |
说明 |
---|---|---|
AutomationIdProperty() |
请参见“说明”。 |
此属性的值必须在应用程序中的所有控件中保持唯一。 |
请参见“说明”。 |
包含整个控件的最外面的矩形。 |
|
请参见“说明”。 |
有边框时支持。如果并非边框中的每个点都是可单击的,那么,当您执行专用的命中测试时,请重写并提供一个可单击的点。 |
|
请参见“说明”。 |
如果该控件可以接收键盘焦点,则它必须支持此属性。 |
|
请参见“说明”。 |
菜单项控件包括在 UI 自动化树的内容视图中,并为其自身标上了名称。 |
|
Null |
无标签。 |
|
MenuItem |
此值对于所有的 UI 框架均相同。 |
|
“菜单项” |
与 MenuItem 控件类型相对应的本地化字符串。 |
|
True |
菜单项控件从不包括在 UI 自动化树的内容视图中。 |
|
True |
菜单项控件必须始终包括在 UI 自动化树的控件视图中。 |
必需的 UI 自动化控件模式
下表列出了菜单项控件必须支持的 UI 自动化控件模式。有关控件模式的更多信息,请参见 UI 自动化控件模式概述。
控件模式/模式属性 |
支持/值 |
说明 |
---|---|---|
视情况而定 |
如果控件可以展开或折叠,则实现 IExpandCollapseProvider。 |
|
视情况而定 |
如果控件执行单个操作或命令,则实现 IInvokeProvider。 |
|
视情况而定 |
如果控件代表可以开启或关闭的选项,则实现 IToggleProvider。 |
|
视情况而定 |
如果控件用于从菜单项的选项列表中进行选择,则实现 ISelectionItemProvider。 |
菜单项的 UI 自动化事件
下表列出了与菜单项控件关联的 Microsoft UI 自动化事件。
事件 |
支持 |
说明 |
---|---|---|
视情况而定 |
如果控件支持 Invoke 控件模式,则必须引发此事件。 |
|
ToggleStateProperty property-changed 事件。 |
视情况而定 |
如果控件支持 Toggle 控件模式,则必须引发此事件。 |
ExpandCollapseStateProperty property-changed 事件。 |
视情况而定 |
如果控件支持 Expand Collapse 控件模式,则必须引发此事件。 |
视情况而定 |
无。 |
必需的 UI 自动化事件
下表列出了所有菜单项控件必须支持的 UI 自动化事件。有关事件的更多信息,请参见 UI 自动化事件概述。
UI 自动化事件 |
支持/值 |
说明 |
---|---|---|
视情况而定 |
无 |
|
视情况而定 |
无 |
|
视情况而定 |
无 |
|
视情况而定 |
无 |
|
BoundingRectangleProperty property-changed 事件。 |
必需 |
无 |
IsOffscreenProperty property-changed 事件。 |
必需 |
无 |
IsEnabledProperty property-changed 事件。 |
必需 |
无 |
ExpandCollapseStateProperty property-changed 事件。 |
视情况而定 |
无 |
ToggleStateProperty property-changed 事件。 |
视情况而定 |
无 |
必需 |
无 |
|
必需 |
无 |
旧版问题
只有当选中 Win32 菜单项,并且可以通过编程方式确定该菜单项是支持 Toggle 模式所必需时,才支持 Toggle 模式。由于 Win32 菜单项不公开它是否选中该功能,因此将在不选中该菜单项时支持 Invoke 模式。即使对于只应支持 Toggle 模式的菜单项,也会创建一个例外来始终支持 Invoke 模式。这样,客户端才不会混淆:一旦选中了菜单项,则以前(在未选中菜单项情况下)支持 Invoke 模式的元素不再支持该模式。