備註
本檔適用於想要使用 System.Windows.Automation 命名空間中定義的受控UI自動化類別的 .NET Framework 開發人員。 如需 UI 自動化的最新資訊,請參閱 Windows 自動化 API:使用者介面自動化。
本主題提供 MenuItem 控制件類型Microsoft UI 自動化支援的相關信息。 它描述控制件的Microsoft UI 自動化樹狀結構,並提供 MenuItem 控制項類型所需的屬性和控制項模式。
功能表控制項允許階層式組織與命令和事件處理程式相關聯的專案。 在一般Microsoft Windows 應用程式中,功能表欄包含數個功能表項(例如 [檔案]、[ 編輯] 和 [視窗]),而每個功能表項都會顯示功能表。 功能表包含功能表項集合(例如 [新增]、[開啟] 和 [關閉]],這些功能表項可以展開以顯示其他功能表項,或在單擊時執行特定動作。 選單項目可以放置於選單、選單列或工具列中。
下列各節會定義 MenuItem 控制項類型所需的 UI 自動化樹狀結構、屬性、控制件模式和事件。 使用者介面自動化需求適用於所有清單控件,無論是 Windows Presentation Foundation (WPF)、Win32 還是 Windows Forms。
必要的 UI 自動化樹狀結構
下表描述與功能表項控制件相關的UI自動化樹狀結構的控件檢視和內容檢視,並描述每個檢視中可包含的內容。 如需UI自動化樹狀結構的詳細資訊,請參閱 UI自動化樹狀結構概觀。
控制項檢視 | 內容檢視 |
---|---|
MenuItem “Help”
|
MenuItem “Help” - MenuItem “說明主題” - MenuItem “About Notepad” |
功能表項控制件的控件檢視具有上述UI自動化樹狀結構。 請注意,「說明」選單項目被包含在內,以更好地展示一般選單到子選單層次結構。
對於內容檢視,功能表不存在於使用者介面自動化樹狀結構中,因為它不會傳達有意義的資訊給使用者。
必要的UI自動化屬性
下表列出UI自動化屬性,其值或定義與功能表項控件特別相關。 如需UI自動化屬性的詳細資訊,請參閱 用戶端的UI自動化屬性。
房產 | 價值觀 | 說明 |
---|---|---|
AutomationIdProperty | 請參閱備註。 | 這個屬性的值在應用程式中的所有控件中必須是唯一的。 |
BoundingRectangleProperty | 請參閱備註。 | 包含整個控制項的最外層矩形。 |
ClickablePointProperty | 請參閱備註。 | 如果有周框,則支援 。 如果周框內的每個點都無法點選,而且您執行特製化的點擊測試,則覆寫並提供可點選的點。 |
IsKeyboardFocusableProperty | 請參閱備註。 | 如果控制項可接收鍵盤焦點,就必定支援此屬性。 |
NameProperty | 請參閱備註。 | 選單項控制項包含在 UI 自動化樹狀結構的內容檢視中,並使用名稱自我標記。 |
LabeledByProperty | Null |
沒有標籤。 |
ControlTypeProperty | 選單項目 | 此值與所有使用者介面架構的值相同。 |
LocalizedControlTypeProperty | 選單項目 | 對應 MenuItem 控制元類型的在地化字串。 |
IsContentElementProperty | 對 | 選單項目控制項永遠不會包含在UI自動化樹的內容檢視中。 |
IsControlElementProperty | 對 | 功能表項控制項必須始終包含在 UI 自動化樹狀結構的控制項檢視中。 |
必要的使用者介面自動化控制模式
下表列出功能表項控制項需要支援的UI自動化控制件模式。 如需控制樣式的詳細資訊,請參閱 UI 自動化控制樣式概觀。
控制件模式屬性 | 支援 | 註釋 |
---|---|---|
IExpandCollapseProvider | 視情況而定 | 如果控制項可以展開或折疊,請實作 IExpandCollapseProvider。 |
IInvokeProvider | 視情況而定 | 如果控制項執行單一動作或命令,請實作 IInvokeProvider。 |
IToggleProvider | 視情況而定 | 如果控制項代表可以開啟或關閉的選項,請實作 IToggleProvider。 |
ISelectionItemProvider | 視情況而定 | 如果控件是用來從選單項目中的選項清單中進行選擇,請實作ISelectionItemProvider。 |
功能表項的 UI 自動化事件
下表列出與功能表項控件相關聯的Microsoft UI 自動化事件。
事件 | 支援 | 說明 |
---|---|---|
InvokedEvent | 視情況而定 | 如果控制項支援呼叫控制項模式,則必須引發相應事件。 |
ToggleStateProperty 屬性變更事件。 | 視情況而定 | 如果控制項支援切換控制樣式,必須引發 。 |
ExpandCollapseStateProperty 屬性變更事件。 | 視情況而定 | 如果控制項支援展開/摺疊控制模式,則必須觸發事件。 |
ElementSelectedEvent | 視情況而定 | 沒有。 |
必要的UI自動化事件
下表列出所有功能表項控制項都必須支援的UI自動化事件。 如需事件的詳細資訊,請參閱 UI Automation Events Overview。
UI 自動化事件 | 支援/值 | 註釋 |
---|---|---|
InvokedEvent | 視情況而定 | 沒有 |
ElementAddedToSelectionEvent | 視情況而定 | 沒有 |
ElementRemovedFromSelectionEvent | 視情況而定 | 沒有 |
ElementSelectedEvent | 視情況而定 | 沒有 |
BoundingRectangleProperty 屬性變更事件。 | 為必填項目 | 沒有 |
IsOffscreenProperty 屬性變更事件。 | 為必填項目 | 沒有 |
IsEnabledProperty 屬性變更事件。 | 為必填項目 | 沒有 |
ExpandCollapseStateProperty 屬性變更事件。 | 視情況而定 | 沒有 |
ToggleStateProperty 屬性變更事件。 | 視情況而定 | 沒有 |
AutomationFocusChangedEvent | 為必填項目 | 沒有 |
StructureChangedEvent | 為必填項目 | 沒有 |
舊版問題
只有在核取 Win32 功能表項目時,才能支援 "切換模式",而且可以程式化判斷是否有必要支援 "切換模式"。 因為 Win32 功能表項不會公開它是否能夠被檢查,所以當功能表項未被核取時,將會支援叫用模式。 即使是應只支援切換模式的功能表項,也將破例一律支援叫用模式。 這是為了避免用戶端感到困惑,即支援叫用模式的元素(未核取功能表項時)一旦功能表項被核取後便不再支援該模式。