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