DataItem 控制項類型的 UI 自動化支援
注意
本文件適用對象為 .NET Framework 開發人員,其想要使用 System.Windows.Automation 命名空間中定義的受控 UI 自動化類別。 如需 UI 自動化的最新資訊,請參閱 Windows 自動化 API:UI 自動化。
本主題提供 DataItem 控制項類型的 Microsoft UI 自動化支援相關資訊。 在 UI 自動化中,控制項類型是一組控制項條件,控制項必須符合條件才能使用 ControlTypeProperty 屬性。 這些條件包括 UI 自動化樹狀結構、UI 自動化屬性值和控制項模式的特定指導方針。
連絡人清單中的項目即是資料項目控制項的範例。 資料項目控制項包含與使用者相關的資訊。 由於包含更為豐富的資訊,這種控制項比簡單的清單項目複雜。
下列章節會定義 DataItem 控制項類型所需的 UI 自動化樹狀結構、屬性、控制項模式與事件。 UI 自動化需求適用於所有資料項目控制項,無論是 Windows Presentation Foundation (WPF)、Win32 或 Windows Forms 皆然。
必要的使用者介面自動化樹狀結構
下表描述與資料項目控制項相關的 UI 自動化樹狀結構的內容檢視與控制項檢視,並說明各檢視中可包含的內容。 如需 UI 自動化樹狀結構的詳細資訊,請參閱 UI 自動化樹狀結構概觀。
UI 自動化樹狀結構 - 控制項檢視 | UI 自動化樹狀結構 - 內容檢視 |
---|---|
DataItem - 視情況而定 (0 個以上;可以結構化為階層) |
DataItem - 視情況而定 (0 個以上;可以結構化為階層) |
資料格中資料項目 (Item) 的項目 (Element) 可裝載各種不同的物件,包括另一層資料項目,或是特定資料格項目 (Element) 如文字、影像或編輯控制項。 如果資料項目 (Item) 的項目 (Element) 具備特定物件角色,則該項目 (Element) 應公開為特定控制項類型;例如,資料格中可選資料項目 (Item) 的 ListItem 控制項類型。
必要的使用者介面自動化屬性
下表列出屬性,其值或定義與資料項目控制項特別有關。 如需 UI 自動化屬性的詳細資訊,請參閱用戶端的 UI 自動化屬性。
屬性 | 值 | 備註 |
---|---|---|
AutomationIdProperty | 請參閱備註。 | 此屬性的值在應用程式中的所有控制項都不得重複。 |
BoundingRectangleProperty | 請參閱備註。 | 包含整個控制項的最外層矩形。 |
ClickablePointProperty | 請參閱備註。 | 如果有週框即受支援。 如果週框中沒有任何可點選的點,而且您執行的是特殊化點擊測試,則會覆寫並提供可點選的點。 |
ControlTypeProperty | DataItem | 此值與所有使用者介面架構的值相同。 |
IsContentElementProperty | True | 資料項目控制項必須一律為內容。 |
IsControlElementProperty | True | 資料項目控制項必須一律為控制項。 |
IsKeyboardFocusableProperty | 請參閱備註。 | 如果控制項可接收鍵盤焦點,就必定支援此屬性。 |
ItemStatusProperty | 請參閱備註。 | 如果控制項包含動態更新的狀態,則必須支援此屬性,使輔助技術得以在項目的狀態變更時接收更新。 |
ItemTypeProperty | 請參閱備註。 | 這個字串值可讓使用者知道項目所代表的物件為何。 例如「媒體檔案」或「連絡人」。 |
LabeledByProperty | Null |
資料項目控制項沒有靜態文字標籤。 |
LocalizedControlTypeProperty | 「資料項目」 | 對應到 DataItem 控制項類型的當地語系化字串。 |
NameProperty | 請參閱備註。 | 資料項目控制項一律會包含主要文字項目,這是最富語意的識別項,可讓使用者聯想該項目。 |
必要的使用者介面自動化控制項模式
下表列出所有資料項目控制項必須支援的 Microsoft UI 自動化控制項模式。 如需控制項模式的詳細資訊,請參閱 UI Automation Control Patterns Overview。
控制項模式 | 支援 | 備註 |
---|---|---|
IExpandCollapseProvider | 相依 | 如果資料項目可以展開或摺疊來顯示和隱藏資訊,則必須支援展開摺疊模式。 |
IGridItemProvider | 相依 | 當容器內包含一組資料項目,可以在空間上逐一巡覽項目時,資料項目將會支援方格項目模式。 |
IScrollItemProvider | 相依 | 當資料容器有太多項目,無法一次顯示在螢幕上時,所有資料項目會支援捲動項目模式的捲動檢視功能。 |
ISelectionItemProvider | Yes | 所有資料項目必須支援選取項目模式,表示已選取項目。 |
ITableItemProvider | 相依 | 如果資料項目包含在資料格控制項類型內,則會支援此模式。 |
IToggleProvider | 相依 | 如果資料項目包含可循環的狀態。 |
IValueProvider | 相依 | 如果資料項目的主要文字可以編輯,則必須支援值模式。 |
在大型清單中使用資料項目
為提高效能,大型清單通常會在 UI framework 內將資料虛擬化。 因此,UI 自動化用戶端無法像在其他項目容器一樣,使用 UI 自動化查詢功能將完整樹狀結構的內容集中顯示在一起。 用戶端應將項目設為捲動檢視 (或展開控制項以顯示所有有用的選項),才能從資料項目存取完整的資訊。
當資料項目的 UI 自動化元素呼叫 SetFocus
時,Microsoft Windows Explorer 案例將成功傳回,並導致焦點設至資料項目樹狀子目錄中的 Edit。
必要的使用者介面自動化事件
下表列出所有資料項目控制項必須支援的 UI 自動化事件。 如需事件的詳細資訊,請參閱 F:System.Windows.Automation.ValuePatternIdentifiers.ValueProperty。
UI 自動化事件 | 支援 | 備註 |
---|---|---|
AutomationFocusChangedEvent | 必要 | 無 |
BoundingRectangleProperty 屬性變更事件。 | 必要 | 無 |
IsEnabledProperty 屬性變更事件。 | 必要 | 無 |
IsOffscreenProperty 屬性變更事件。 | 必要 | 無 |
NameProperty 屬性變更事件。 | 必要 | 無 |
StructureChangedEvent | 必要 | 無 |
InvokedEvent | 相依 | 無 |
ExpandCollapseStateProperty 屬性變更事件。 | 相依 | 無 |
ElementAddedToSelectionEvent | 必要 | 無 |
ElementRemovedFromSelectionEvent | 必要 | 無 |
ElementSelectedEvent | 必要 | 無 |
ToggleStateProperty 屬性變更事件。 | 相依 | 無 |
ValueProperty 屬性變更事件。 | 相依 | 無 |
DataItem 控制項類型範例
下圖顯示在清單檢視控制項中的 DataItem 控制項類型,且包含對資料行中豐富資訊的支援。
與資料項目控制項相關的 UI 自動化樹狀結構的控制項檢視與內容檢視顯示如下。 每個自動化項目的控制項模式顯示在括號中。 Group "Contoso" 也是資料格主控制項資料格的一部分。
UI 自動化樹狀結構 - 控制項檢視 | UI 自動化樹狀結構 - 內容檢視 |
---|---|
- Group "Contoso" (Table, Grid) - DataItem "Accounts Receivable.doc" (TableItem, GridItem, SelectionItem, Invoke) - Image "Accounts Receivable.doc" - Edit "Name" (TableItem, GridItem, Value "Accounts Receivable.doc") - Edit "Date modified" (TableItem, GridItem, Value "8/25/2006 3:29 PM") - Edit "Size" (GridItem, TableItem, Value "11.0 KB) - DataItem "Accounts Payable.doc" (TableItem, GridItem, SelectionItem, Invoke) - ... |
- Group "Contoso" (Table, Grid) - DataItem "Accounts Receivable.doc" (TableItem, GridItem, SelectionItem, Invoke) - Image "Accounts Receivable.doc" - Edit "Name" (TableItem, GridItem, Value "Accounts Receivable.doc") - Edit "Date modified" (TableItem, GridItem, Value "8/25/2006 3:29 PM") - Edit "Size" (GridItem, TableItem, Value "11.0 KB) - DataItem "Accounts Payable.doc" (TableItem, GridItem, SelectionItem, Invoke) - … |
如果資料格表示可選取項目的清單,則對應的使用者介面項目可使用 ListItem 控制項類型公開,而不是 DataItem 控制項類型。 在前述範例中,Group ("Contoso") 下的 DataItem 項目 ("Accounts Receivable.doc" 和 "Accounts Payable.doc") 可藉由公開為 ListItem 控制項類型的方式獲得改善,因為該類型已支援 SelectionItem 控制項模式。