備註
本檔適用於想要使用 System.Windows.Automation 命名空間中定義的受控UI自動化類別的 .NET Framework 開發人員。 如需 UI 自動化的最新資訊,請參閱 Windows 自動化 API:使用者介面自動化。
本主題提供清單控制項類型的UI自動化支援相關信息。 在UI自動化中,控件類型是控制項必須符合的一組條件,才能使用 ControlTypeProperty 屬性。 這些條件包括UI自動化樹狀結構、UI自動化屬性值和控件模式的特定指導方針。
清單控制項類型提供一種方式來組織平面項目群組或項目群組,並允許使用者選取其中一項或多項。 清單控制項類型對它可能包含的子元素類型有鬆散的限制。 這可讓UI自動化提供者支持選取容器的已知元素。
下列各節中的UI自動化需求適用於實作清單控件類型的所有控件,無論是Windows Presentation Foundation (WPF)、Win32 或 Windows Forms。 清單容器控件是實作清單控件類型的控制項範例。
必要的 UI 自動化樹狀結構
下表描述與清單控件相關的UI自動化樹狀結構的兩個檢視,並描述每個檢視中可包含的內容。 控件檢視只包含控件的元素,而內容檢視會從樹狀結構中移除多餘的資訊。 例如,用於標示下拉式方塊的文字控制項將會顯示為 ComboBox NameProperty
。 因為文字控件已經透過控件檢視以這種方式公開,所以不需要公開兩次;因此,它會從內容檢視中移除。 如需UI自動化樹狀結構的詳細資訊,請參閱 UI自動化樹狀結構概觀。
控制項檢視 | 內容檢視 |
---|---|
包含對應至控制項的元素。 | 從樹狀結構中移除冗餘資訊,以便輔助技術能與使用者用最小的一組有意義的資訊進行互動。 |
清單 - DataItem (0 或更多) - ListItem (0 個以上) - 群組 (0 或更多) - ScrollBar (0、1 或 2) |
清單 - DataItem (0 或更多) - ListItem (0 個以上) - 群組 (0 或更多) |
實作清單控制項類型的控制項檢視(例如清單控制件)包含:
清單控制項中的零個或多個項目(項目可基於清單項目或資料項目控制類型)。
列表控件中的零個或多個群組控件。
零、一或兩個滾動條控件。
實作清單控制類型的控制項的內容檢視(例如清單控制)包含:
清單控制項中的零個或多個項目(項目可基於清單項目或資料項目控制類型)。
清單控件中零個或多個群組。
除了群組在一起以外,清單控件不能有階層式關聯性的專案。 如果專案在UI自動化樹狀結構中有子系,則清單容器應該以樹狀結構控件類型為基礎。
清單控制項內的可選取項目可以從清單控制項的UI自動化樹狀結構中的子系中取得。 清單控制項中的所有項目都必須屬於相同的選取群組。 清單中的可選取項目應該公開為 ListItem (而非 DataItem) 控制項類型。
必要的UI自動化屬性
下表列出UI自動化屬性,其值或定義與清單控件特別相關。 如需UI自動化屬性的詳細資訊,請參閱 用戶端的UI自動化屬性。
UI 自動化屬性 | 價值觀 | 註釋 |
---|---|---|
AutomationIdProperty | 請參閱備註。 | 這個屬性的值在應用程式中的所有控件中必須是唯一的。 |
BoundingRectangleProperty | 請參閱備註。 | 包含整個控制項的最外層矩形。 |
ClickablePointProperty | 請參閱備註。 | 如果清單控制項具有可點選的點(可以按兩下以讓清單取得焦點的點),則必須透過這個屬性公開該點。 如果 IsOffScreen 屬性的值為 true,則會引發 NoClickablePointException。 |
IsKeyboardFocusableProperty | 請參閱備註。 | 如果控制項可接收鍵盤焦點,就必定支援此屬性。 |
NameProperty | 請參閱備註。 | 清單控制件的 Name 屬性的值應該傳達要求使用者選取的選項類別。 此屬性通常會從靜態文字標籤取得其名稱。 如果沒有靜態文字標籤,應用程式開發人員必須公開 Name 屬性的值。 清單控制項不需要這個屬性的唯一時間,是在另一個控件的子樹內使用控件時。 |
LabeledByProperty | 請參閱備註。 | 如果有靜態文字標籤,則此屬性必須公開該控件的參考。 |
ControlTypeProperty | 清單 | 此值與所有使用者介面架構的值相同。 |
LocalizedControlTypeProperty | 清單 | 對應至清單控制件類型的當地語系化字串。 |
IsContentElementProperty | 對 | 清單控制件一律包含在使用者介面自動化樹狀結構的內容檢視中。 |
IsControlElementProperty | 對 | 清單控制件一律包含在UI自動化樹狀結構的控件檢視中。 |
IsKeyboardFocusableProperty | 對 | 如果容器可以接受鍵盤輸入,則這個屬性值應該是 true。 |
HelpTextProperty | 請參閱備註。 | 清單控制件的說明文字應該說明為何要求使用者從選項清單中做出選擇。 例如,「從此清單中選取項目將會設定監視器的顯示解析度」。 |
必要的使用者介面自動化控制項模式和屬性
下表列出清單控制項需要支援的UI自動化控制項模式。 如需控制樣式的詳細資訊,請參閱 UI 自動化控制樣式概觀。
控制件模式/模式屬性 | 支援/值 | 註釋 |
---|---|---|
ISelectionProvider | 為必填項目 | 所有支援清單控件類型的控件,在控件中包含的項目之間維持選取狀態時,都必須實作 ISelectionProvider 。 如果容器內的項目無法選取,則應使用群體控制類型。 |
IsSelectionRequired | 視情況而定 | 清單控制項不總是需要選取項目。 |
CanSelectMultiple | 視情況而定 | 清單控制項可以是單一或多個選取容器。 |
IScrollProvider | 視情況而定 | 如果容器中的專案可捲動,請實作此控件模式。 |
IGridProvider | 視情況而定 | 當網格線導覽需要依專案依專案使用時,請實作此模式。 |
IMultipleViewProvider | 視情況而定 | 如果控件可以支援容器中專案的多個檢視,請實作此控件模式。 |
ITableProvider | 從不 |
ITableProvider 永遠不支援清單控制件類型。 如果控件應該支援此控制項模式,則控制項應該以數據格控件類型為基礎。 |
必要的UI自動化事件
下表列出所有清單控制件都必須支援的UI自動化事件。 如需事件的詳細資訊,請參閱 UI Automation Events Overview。
UI 自動化事件 | 支援/值 | 註釋 |
---|---|---|
InvalidatedEvent | 視情況而定 | 沒有 |
LayoutInvalidatedEvent | 視情況而定 | 沒有 |
BoundingRectangleProperty 屬性變更事件。 | 為必填項目 | 沒有 |
IsOffscreenProperty 屬性變更事件。 | 為必填項目 | 沒有 |
IsEnabledProperty 屬性變更事件。 | 為必填項目 | 沒有 |
CurrentViewProperty 屬性變更事件。 | 視情況而定 | 沒有 |
HorizontallyScrollableProperty 屬性變更事件。 | 視情況而定 | 沒有 |
HorizontalScrollPercentProperty 屬性變更事件。 | 視情況而定 | 沒有 |
HorizontalViewSizeProperty 屬性變更事件。 | 視情況而定 | 沒有 |
VerticalScrollPercentProperty 屬性變更事件。 | 視情況而定 | 沒有 |
VerticallyScrollableProperty 屬性變更事件。 | 視情況而定 | 沒有 |
VerticalViewSizeProperty 屬性變更事件。 | 視情況而定 | 沒有 |
AutomationFocusChangedEvent | 為必填項目 | 沒有 |
StructureChangedEvent | 為必填項目 | 沒有 |