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 的「關於記事本」 |
在功能表項目控制項的控制項檢視中,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 功能表項目不會公開是否能夠勾選,因此當未勾選功能表項目時,會支援叫用模式。 就算是應該只支援叫用模式的功能表項目,也會有一律支援叫用模式的例外狀況。 如此一來,用戶端就不會對支援叫用模式 (未勾選功能表項目時) 的項目一旦變成勾選時,是否就不再支援該模式的問題感到困惑。