設計自訂屬性、事件和控制項模式
自訂屬性、事件或控制項模式的設計在各種不同的控制項實作中應該很有用。 應該避免只在有限案例中使用的控制項或應用程式特定設計。 設計應遵循現有 Microsoft 消費者介面自動化屬性、事件及控制項模式的範例,這些模式經過仔細指定,以符合各種協助工具和自動化測試應用程式的需求。
實作自訂屬性、事件或控制項模式的規格牽涉到用戶端和提供者端的合作和合約,並要求兩方一致地實作規格。 鼓勵公司與產業組織合作,例如 協助工具互通性聯盟 (AIA) 來設計和發佈自訂屬性、事件或控制模式的規格。 如此一來,就可以達成共識,而且可以確保與各種應用程式之間的互通性。
本主題包含下列幾節:
使用自訂屬性和事件的時機
建立自訂屬性、事件或控制項模式之前,請確定消費者介面自動化不提供現有的解決方案。 例如,建立自訂的「按一下」控制項模式並非必要,因為 叫 用控制項模式已經描述該功能。
如果您決定需要自訂屬性、事件或控制項模式,請確定它不是太模糊或泛型。 例如,稱為 「顯示」的控制項模式並不實用,因為控制項的可見度可由元素上的可用性屬性來表示,例如 UIA_IsExpandCollapsePatternAvailablePropertyId 或 UIA_IsScrollItemPatternAvailablePropertyId。
實作自訂解決方案之前,請仔細確認它是必要的,然後完全設計功能。
設計自訂屬性
消費者介面自動化包含兩種基本類型的屬性:自動化專案屬性和控制項模式屬性。 自動化元素屬性是由一組通用的屬性所組成,例如 Name、AcceleratorKey 和 ClassName,不論控制項類型為何,所有消費者介面自動化元素都會公開。 控制項模式屬性是由控制項透過特定控制項模式公開。 每個控制項模式都有一組對應的控制項模式屬性,控制項必須公開。 例如,支援 Grid 控制項模式的控制項會公開 ColumnCount 和 RowCount 屬性。
自訂自動化元素屬性或控制項模式屬性應遵循下列設計指導方針:
- 自訂屬性必須具有 UIAutomationType 列舉所指定的下列其中一種資料類型。 自訂屬性不支援其他資料類型。
- UIAutomationType_Bool
- UIAutomationType_Double
- UIAutomationType_Element
- UIAutomationType_Int
- UIAutomationType_Point
- UIAutomationType_String
- 如果自訂屬性包含 (BSTR) 字串資料,則規格必須指出屬性是否可當地語系化 (亦即字串是否可以轉譯成不同的 UI 語言) 。
- 自訂屬性不應與現有屬性的特性或功能重迭。
設計自訂事件
應用程式會使用消費者介面自動化事件通知來回應涉及 UI 專案的變更和動作。 大部分屬性都有相關聯的屬性變更事件,消費者介面自動化屬性的值變更時引發。 如果您引進自訂屬性,您應該考慮引進任何可能也需要的對應自訂事件。
自訂事件應遵循下列設計指導方針:
- 自訂事件必須是「無狀態」。它不能與特定屬性或值相關聯。
- 自訂事件不應與任何現有事件的定義或角色重迭。
自訂消費者介面自動化事件和 WinEvents
WinEvents 是 Microsoft Windows 平臺中的實用處理序間通訊和事件機制。 不過,引進新的 WinEvent 識別碼有風險,因為它可能會與其他應用程式或作業系統發生衝突,導致系統變得不穩定。 為了避免衝突,Microsoft 已定義數個不同的 WinEvent 類別,而且針對每個類別,已定義一或多個值範圍,以作為 WinEvent 識別碼使用。 如需詳細資訊,請參閱 WinEvent 識別碼的配置。
自訂消費者介面自動化事件可避免衝突,方法是在消費者介面自動化架構內部配置事件識別碼。
設計自訂控制項模式
控制項模式是具有屬性、方法和事件的介面,可定義自動化專案可用的離散功能片段。 控制項模式方法可讓消費者介面自動化用戶端操作控制項的特定層面。 控制項模式屬性和事件提供控制項某些層面的相關資訊,並提供實作控制項模式之自動化專案狀態的相關資訊。
自訂控制項模式應遵循下列設計指導方針:
- 自訂控制項模式應該涵蓋特定案例。 例如, ItemContainer 控制項模式適用于查詢自主物件,而不論虛擬化狀態為何,但不會列舉或計算自主物件。
- 自訂控制項模式不應與現有控制項模式的功能重迭。 例如, Invoke 和 ExpandCollapse 控制項模式不應結合並呈現為新的控制項模式。 重複使用現有的控制項模式,或使用新的控制項模式定義唯一案例。
- 多個自訂控制項模式可以一起設計,以支援複雜的案例。 例如,Selection 和SelectionItem控制項模式會一起運作,以支援一般物件選取案例。
自訂控制項類型
雖然本主題著重于如何註冊自訂消費者介面自動化屬性、事件和控制項模式,但也可能會引進新的控制項類型。 不同于自訂屬性、事件和控制項模式,自訂控制項類型無法在執行時間以程式設計方式註冊,因為它實際上是消費者介面自動化 ControlType 屬性的潛在值。 不過,自訂控制項類型識別碼可以定義、發佈,並提供給其他用戶端和提供者使用。 如需控制項類型的詳細資訊,請參閱消費者介面自動化控制項類型概觀。
相關主題