MenuItem 控制項類型

本主題提供MenuItem控制項類型的 Microsoft 消費者介面自動化支援相關資訊。

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

下列各節會定義MenuItem控制項類型所需的消費者介面自動化樹狀結構、屬性、控制項模式和事件。 消費者介面自動化需求適用于 UI 架構/平臺整合控制項類型與控制項模式消費者介面自動化支援的所有功能表項目控制項。

本主題包含下列各節。

一般樹狀結構

下表描述與功能表項目控制項相關的消費者介面自動化樹狀結構的一般控制項和內容檢視,並描述每個檢視中可包含的內容。 如需 UI 自動化樹狀結構的詳細資訊,請參閱 UI 自動化樹狀結構概觀

控制項檢視 內容檢視
  • MenuItem 的「說明」
    • [說明] 功能表項目的功能表 (子功能表)
      • MenuItem 的「說明主題」
      • MenuItem 的「關於記事本」
  • MenuItem 的「說明」
    • MenuItem 的「說明主題」
    • MenuItem 的「關於記事本」

 

在功能表項目控制項的控制項檢視中,UI 自動化樹狀結構顯示如上。 請注意,功能表列上的 [ 說明 ] 功能表項目已新增,以更清楚地說明結構。

對於內容檢視,功能表不存在於消費者介面自動化樹狀結構中,因為它不會向使用者傳達有意義的資訊。

相關屬性

下表列出與MenuItem控制項類型特別相關的消費者介面自動化屬性。 如需消費者介面自動化屬性的詳細資訊,請參閱從 消費者介面自動化 Elements 擷取屬性

使用者介面自動化屬性 注意
UIA_AutomationIdPropertyId 請參閱備註。 此屬性的值在消費者介面自動化樹狀結構的原始檢視中,所有對等專案都必須是唯一的。 如果已知元素在使用者介面的不同實例之間保持一致,請為功能表項目配置 AutomationId 屬性。 如果功能表項目是動態填入且無法預測的,請將 AutomationId 屬性保留空白。
UIA_BoundingRectanglePropertyId 請參閱備註。 包含整個控制項的最外層矩形。
UIA_ClickablePointPropertyId 請參閱備註。 如果有週框即受支援。 如果周框內的每個點都無法點選,且元素會執行特製化點擊測試,請覆寫並提供可點選的點。
UIA_ControlTypePropertyId MenuItem
UIA_IsContentElementPropertyId true 功能表項目控制項一律包含在消費者介面自動化樹狀目錄的內容檢視中。
UIA_IsControlElementPropertyId true 功能表項目控制項一律包含在消費者介面自動化樹狀結構的控制項檢視中。
UIA_IsKeyboardFocusablePropertyId 請參閱備註。 如果控制項可接收鍵盤焦點,就必定支援此屬性。
UIA_LocalizedControlTypePropertyId 請參閱備註。 對應至 MenuItem 控制項類型的當地語系化字串。 en-US 或英文 (美國) 的預設值為 「功能表項目」。
UIA_NamePropertyId 請參閱備註。 功能表項目控制項的名稱是用來標記它的文字。

 

必要的控制項模式

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

控制項模式 支援 備註
IExpandCollapseProvider 相依 如果控制項可以展開或折迭,請實作 IExpandCollapseProvider
IInvokeProvider 相依 如果控制項執行單一動作或命令,請實作 IInvokeProvider
ISelectionItemProvider 相依 如果控制項用來從功能表項目之間的選項清單中選取,請實作 ISelectionItemProvider
IToggleProvider 相依 如果控制項代表可開啟或關閉的選項,請實作 IToggleProvider

 

必要的事件

下表列出需要功能表項目控制項才能支援的消費者介面自動化事件。 如需 UI Automation Events Overview事件的詳細資訊,請參閱

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 功能表項目不會公開它是否可以檢查,所以在未核取功能表項目時,支援叫用控制項模式。 一律支援叫用控制項模式,即使是僅支援切換控制項模式所需的功能表項目。 如此一來,當支援 用控制項模式的功能表項目時,用戶端就不會混淆, (當功能表項目取消核取時,) 不再支援該模式。

概念

UI 自動化控制項類型概觀

UI 自動化概觀