MenuItem 控制項類型的 UI 自動化支援

注意

本文件適用對象為 .NET Framework 開發人員,其想要使用 System.Windows.Automation 命名空間中定義的受控 UI 自動化類別。 如需 UI 自動化的最新資訊,請參閱 Windows 自動化 API:UI 自動化

本主題提供 MenuItem 控制項類型的 Microsoft UI 自動化支援相關資訊。 其中說明控制項的 Microsoft UI 自動化樹狀結構,並提供 MenuItem 控制項類型的必要屬性和控制項模式。

功能表控制項可將命令和事件處理常式的關聯項目以階層方式組織。 在典型的 Microsoft Windows 應用程式中,功能表列包含數個功能表項目 (例如 [檔案]、[編輯] 和 [視窗]),而每個功能表項目都會顯示功能表。 功能表又包含一組功能表項目 (例如 [開新檔案] 、[開啟舊檔] 和 [關閉檔案] ),這些項目可展開顯示更多的功能表項目,或在按一下時可執行特定的動作。 功能表項目可裝載於功能表、功能表列或工具列中。

下列章節會定義 MenuItem 控制項類型所需的 UI 自動化樹狀結構、屬性、控制項模式和事件。 UI 自動化需求適用於所有清單控制項,無論是 Windows Presentation Foundation (WPF)、Win32 或 Windows Forms。

必要的使用者介面自動化樹狀結構

下表描述屬於功能表項目控制項之 UI 自動化樹狀結構的控制項檢視和內容檢視,並說明各檢視中可包含的內容。 如需 UI 自動化樹狀結構的詳細資訊,請參閱 UI 自動化樹狀結構概觀

控制項檢視 內容檢視
MenuItem 的「說明」

  • 功能表 ([說明] 功能表項目的子功能表)

    • MenuItem 的「說明主題」
    • MenuItem 的「關於記事本」
MenuItem 的「說明」

- MenuItem 的「說明主題」
- MenuItem 的「關於記事本」

在功能表項目控制項的控制項檢視中,UI 自動化樹狀結構顯示如上。 請注意,其中包含 [說明] 功能表項目,讓一般功能表到子功能表階層的結構更為清楚。

在內容檢視中,UI 自動化樹狀結構沒有功能表,因為它並未傳達任何有意義的資訊給使用者。

必要的使用者介面自動化屬性

下表列示 UI 自動化屬性,其值或定義與功能表項目控制項特別有關。 如需 UI 自動化屬性的詳細資訊,請參閱用戶端的 UI 自動化屬性

屬性 數值 Description
AutomationIdProperty 請參閱備註。 此屬性的值在應用程式中的所有控制項都不得重複。
BoundingRectangleProperty 請參閱備註。 包含整個控制項的最外層矩形。
ClickablePointProperty 請參閱備註。 如果有週框即受支援。 如果週框中沒有任何可點選的點,而且您執行的是特殊化點擊測試,則會覆寫並提供可點選的點。
IsKeyboardFocusableProperty 請參閱備註。 如果控制項可接收鍵盤焦點,就必定支援此屬性。
NameProperty 請參閱備註。 功能表項目控制項會包含在 UI 自動化樹狀結構的內容檢視中,而且會自行加上名稱標籤。
LabeledByProperty Null 沒有標籤。
ControlTypeProperty MenuItem 此值與所有使用者介面架構的值相同。
LocalizedControlTypeProperty 「功能表項目」 對應到 MenuItem 控制項類型的當地語系化字串。
IsContentElementProperty True 此功能表項目控制項一律不包含在 UI 自動化樹狀結構的內容檢視中。
IsControlElementProperty True 此功能表項目控制項一律包含在 UI 自動化樹狀結構的內容檢視中。

必要的使用者介面自動化控制項模式

下表列出功能表項目控制項必須支援的 UI 自動化控制項模式。 如需控制項模式的詳細資訊,請參閱 UI Automation Control Patterns Overview

控制項模式屬性 支援 備註
IExpandCollapseProvider 相依 如果可以展開或摺疊控制項,則實作 IExpandCollapseProvider
IInvokeProvider 相依 如果控制項執行單一動作或命令,則實作 IInvokeProvider
IToggleProvider 相依 如果控制項是可以開啟或關閉的選項,則實作 IToggleProvider
ISelectionItemProvider 相依 如果控制項可用來從功能表項目的選項清單進行選取,則實作 ISelectionItemProvider

功能表項目的使用者介面自動化事件

下表列出與功能表項目控制項相關聯的 Microsoft UI 自動化事件。

Event 支援 說明
InvokedEvent 相依 如果控制項支援叫用控制項模式,則必須引發此一事件。
ToggleStateProperty 屬性變更事件。 相依 如果控制項支援切換控制項模式,則必須引發此一事件。
ExpandCollapseStateProperty 屬性變更事件。 相依 如果控制項支援展開摺疊控制項模式,則必須引發此一事件。
ElementSelectedEvent 相依 無。

必要的使用者介面自動化事件

下表列出所有功能表項目控制項必須支援的 UI 自動化事件。 如需事件的詳細資訊,請參閱 UI Automation Events Overview

UI 自動化事件 支援/值 備註
InvokedEvent 相依
ElementAddedToSelectionEvent 相依
ElementRemovedFromSelectionEvent 相依
ElementSelectedEvent 相依
BoundingRectangleProperty 屬性變更事件。 必要
IsOffscreenProperty 屬性變更事件。 必要
IsEnabledProperty 屬性變更事件。 必要
ExpandCollapseStateProperty 屬性變更事件。 相依
ToggleStateProperty 屬性變更事件。 相依
AutomationFocusChangedEvent 必要
StructureChangedEvent 必要

舊版問題

當勾選 Win32 功能表項目,並可利用程式設計方式判斷是否有必要支援切換模式時,才會支援切換模式。 由於 Win32 功能表項目不會公開是否能夠勾選,因此當未勾選功能表項目時,會支援叫用模式。 就算是應該只支援叫用模式的功能表項目,也會有一律支援叫用模式的例外狀況。 如此一來,用戶端就不會對支援叫用模式 (未勾選功能表項目時) 的項目一旦變成勾選時,是否就不再支援該模式的問題感到困惑。

另請參閱