Sdílet prostřednictvím


Práce s virtualizovanými položkami

Toto téma popisuje, jak používat funkcionality poskytované vzory ovládacích prvků ItemContainer a VirtualizedItem, abyste mohli najít a načíst informace o virtualizovaných položkách.

Přehled virtualizace

Ovládací prvky, které obsahují velký počet podřízených položek, mohou používat virtualizaci k efektivní správě položek. Díky virtualizaci udržuje ovládací prvek v paměti úplné informace pouze pro podmnožinu položek v daném okamžiku. Podmnožina obvykle zahrnuje pouze ty položky, které jsou aktuálně viditelné pro uživatele. Úplné informace o zbývajících virtualizovaných položkách se uchovávají v úložišti a načtou se do paměti nebo zjistí, jak ho ovládací prvek potřebuje, například když se uživateli zobrazí nové položky.

Ovládací prvky, které používají virtualizaci, představují problém, protože jako prvky automatizace uživatelského rozhraní Microsoftu ve stromě automatizace uživatelského rozhraní jsou plně dostupné pouze položky, které byly realizovány. Virtualizované položky ve stromu neexistují, takže informace o nich nejsou klientům k dispozici. Pokud chcete načíst informace o virtualizovaných položkách, klienti potřebují způsob, jak vynutit automatizaci uživatelského rozhraní, aby předala požadavek na realizaci položek do ovládacího prvku. Po realizaci položek může automatizace uživatelského rozhraní pro ně vytvářet prvky automatizace uživatelského rozhraní. Automatizace uživatelského rozhraní obsahuje dva vzory ovládacích prvků, které klientům umožňují pracovat s virtualizovanými položkami: ItemContainer a VirtualizedItem.

Jak ovládací prvek podporuje virtualizaci

Každý ovládací prvek, který může obsahovat virtualizované položky, musí podporovat ItemContainer vzor ovládacího prvku. Kromě toho musí všechny položky, které lze virtualizovat, podporovat VirtualizedItem řídicí vzor. Funkce, které jsou vystavené vzory ovládacích prvků ItemContainer a VirtualizedItem, jsou přístupné klientům prostřednictvím rozhraní IUIAutomationItemContainerPattern a IUIAutomationVirtualizedItemPattern.

Jak klienti hledají a realizují virtualizované položky

Klienti mohou použít IUIAutomationItemContainerPattern::FindItemByProperty metodu, hledání podřízených položek v kontejneru podle hodnoty konkrétní vlastnosti. Metoda může také načíst první položku v kontejneru nebo položku, která následuje za zadanou položkou. Pokud se najde odpovídající podřízená položka, FindItemByProperty načte rozhraní IUIAutomationElement pro tuto položku. Pokud je však podřízená položka virtualizována, rozhraní IUIAutomationElement je zástupný symbol. K chybě UIA_E_ELEMENTNOTAVAILABLE dojde, když se klient pokusí použít rozhraní IUIAutomationElement k načtení hodnot vlastností nebo volání metod, které ještě nejsou k dispozici. Které vlastnosti nebo metody jsou dostupné prostřednictvím zástupného symbolu, závisí na implementaci ovládacího prvku. Jediným požadavkem pro zástupný symbol je podpora rozhraní IUIAutomationVirtualizedItemPattern.

Chyba UIA_E_ELEMENTNOTAVAILABLE značí klientovi, že je možné virtualizovat položku. Klient by měl odpovědět načtením IUIAutomationVirtualizedItemPattern rozhraní pro položku a pak realizovat položku voláním IUIAutomationVirtualizedItemPattern::Realize metoda. Pokud se to podaří, IUIAutomationElement rozhraní je plně funkční se všemi dostupnými vlastnostmi.

V závislosti na implementaci ovládacího prvku může volání IUIAutomationVirtualizedItemPattern::Realize může způsobit, že ovládací prvek posune položku do zobrazení. Klient by se ale neměl spoléhat na to, že se položka posune do zorného pole nebo že bude zobrazena. Chcete-li zajistit, aby byla položka viditelná, může klient použít IUIAutomationScrollItemPattern::ScrollIntoView metoda.

Příklad

Příklad kódu, který ukazuje, jak používat podporu automatizace uživatelského rozhraní pro virtualizaci, najdete v tématu Jak načíst virtualizovanou položku.

Přehled vzorů ovládacích prvků automatizace uživatelského rozhraní