Bagikan melalui


Bekerja dengan Item Tervirtualisasi

Topik ini menjelaskan cara menggunakan fungsionalitas yang disediakan oleh pola kontrol ItemContainer dan VirtualizedItem untuk menemukan dan mengambil informasi tentang item virtual.

Gambaran Umum Virtualisasi

Kontrol yang berisi sejumlah besar item anak dapat menggunakan virtualisasi untuk mengelola item secara efisien. Dengan virtualisasi, kontrol mempertahankan informasi lengkap dalam memori hanya untuk subset item pada waktu tertentu. Biasanya, subset hanya menyertakan item yang saat ini terlihat oleh pengguna. Informasi lengkap tentang item virtual yang tersisa disimpan dalam penyimpanan dan dimuat ke dalam memori, atau direalisasikan, karena kontrol membutuhkannya, misalnya, karena item baru terlihat oleh pengguna.

Kontrol yang menggunakan virtualisasi mewakili tantangan karena hanya item yang direalisasikan yang sepenuhnya tersedia sebagai elemen Microsoft UI Automation di pohon Automation UI. Item virtual tidak ada di pohon, sehingga informasi tentang item tersebut tidak tersedia untuk klien. Untuk mengambil informasi tentang item virtual, klien memerlukan cara untuk memaksa Automasi UI meneruskan permintaan untuk mewujudkan item ke kontrol. Setelah item direalisasikan, Automasi UI dapat membuat elemen Automation UI untuk item tersebut. Automasi UI mencakup dua pola kontrol untuk memungkinkan klien bekerja dengan item virtual: ItemContainer dan VirtualizedItem.

Cara Kontrol Mendukung Virtualisasi

Kontrol apa pun yang dapat berisi item virtual harus mendukung pola kontrol ItemContainer . Selanjutnya, item apa pun yang dapat divirtualisasi harus mendukung pola kontrol VirtualizedItem . Fungsionalitas yang diekspos oleh pola kontrol ItemContainer dan VirtualizedItem dapat diakses oleh klien melalui antarmuka IUIAutomationItemContainerPattern dan IUIAutomationVirtualizedItemPattern .

Cara Klien Menemukan dan Mewujudkan Item Virtual

Klien dapat menggunakan metode IUIAutomationItemContainerPattern::FindItemByProperty untuk mencari item anak dalam kontainer berdasarkan nilai properti tertentu. Metode ini juga dapat mengambil item pertama dalam kontainer atau item yang mengikuti item yang ditentukan. Jika item anak yang cocok ditemukan, FindItemByProperty mengambil antarmuka IUIAutomationElement untuk item tersebut. Namun, jika item anak divirtualisasi, antarmuka IUIAutomationElement adalah tempat penampung. Kesalahan UIA_E_ELEMENTNOTAVAILABLE terjadi ketika klien mencoba menggunakan antarmuka IUIAutomationElement untuk mengambil nilai properti atau metode panggilan yang belum tersedia. Properti atau metode mana yang tersedia melalui tempat penampung tergantung pada implementasi kontrol. Satu-satunya persyaratan untuk tempat penampung adalah mendukung antarmuka IUIAutomationVirtualizedItemPattern .

Kesalahan UIA_E_ELEMENTNOTAVAILABLE adalah indikasi kepada klien bahwa item dapat divirtualisasi. Klien harus merespons dengan mengambil antarmuka IUIAutomationVirtualizedItemPattern untuk item, lalu mewujudkan item dengan memanggil metode IUIAutomationVirtualizedItemPattern::Real. Jika ini berhasil, antarmuka IUIAutomationElement berfungsi penuh dengan semua properti yang sesuai yang tersedia.

Bergantung pada implementasi kontrol, memanggil IUIAutomationVirtualizedItemPattern::Real dapat menyebabkan kontrol menggulir item ke tampilan. Namun, klien tidak boleh mengandalkan item yang menggulir ke tampilan atau dibuat terlihat. Untuk memastikan bahwa item terlihat, klien dapat menggunakan metode IUIAutomationScrollItemPattern::ScrollIntoView .

Contoh

Misalnya kode yang menunjukkan cara menggunakan dukungan Automation UI untuk virtualisasi, lihat Cara Mengambil Item Virtual.

Gambaran Umum Pola Kontrol Automasi UI