Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym temacie opisano sposób używania funkcji udostępnianych przez ItemContainer i VirtualizedItem wzorców kontrolek, aby znaleźć i pobrać informacje o elementach zwirtualizowanych.
- Omówienie wirtualizacji
- Jak kontrolka obsługuje wirtualizację
- Jak klienci znajdują i wdrażają zwirtualizowane przedmioty
- Przykład
- Tematy pokrewne
Omówienie wirtualizacji
Kontrolki zawierające dużą liczbę elementów podrzędnych mogą używać wirtualizacji do wydajnego zarządzania elementami. Dzięki wirtualizacji kontrolka przechowuje pełne informacje w pamięci tylko dla podzestawu elementów w danym momencie. Zazwyczaj podzbiór zawiera tylko te elementy, które są obecnie widoczne dla użytkownika. Pełne informacje o pozostałych elementach zwirtualizowanych są przechowywane w magazynie i są ładowane do pamięci lub realizowane, gdy kontrolka tego potrzebuje, na przykład, gdy nowe elementy stają się widoczne dla użytkownika.
Kontrolki korzystające z wirtualizacji stanowią wyzwanie, ponieważ tylko zrealizowane elementy są w pełni dostępne jako elementy automatyzacji interfejsu użytkownika firmy Microsoft w drzewie automatyzacji interfejsu użytkownika. Elementy zwirtualizowane nie istnieją w drzewie, więc informacje o nich nie są dostępne dla klientów. Aby pobrać informacje o elementach zwirtualizowanych, klienci muszą wymusić na Automatyzacji Interfejsu Użytkownika przekazanie żądania do kontrolki w celu uzyskania dostępu do tych elementów. Po zrealizowaniu elementów automatyzacja interfejsu użytkownika może tworzyć dla nich elementy automatyzacji interfejsu użytkownika. Automatyzacja interfejsu użytkownika obejmuje dwa wzorce sterowania umożliwiające klientom pracę z elementami zwirtualizowanymi: ItemContainer i VirtualizedItem.
Jak kontrolka obsługuje wirtualizację
Każda kontrolka, która może zawierać elementy zwirtualizowane, musi obsługiwać wzorzec kontrolki ItemContainer. Ponadto każdy element, który można zwirtualizować, musi obsługiwać wzorzec kontrolki VirtualizedItem. Funkcje udostępniane przez wzorce kontrolek ItemContainer i VirtualizedItem są dostępne dla klientów za pośrednictwem interfejsów IUIAutomationItemContainerPattern oraz IUIAutomationVirtualizedItemPattern.
Jak klienci mogą znajdować i realizować elementy zwirtualizowane
Użytkownicy mogą użyć metody IUIAutomationItemContainerPattern::FindItemByProperty, aby wyszukać elementy podrzędne w kontenerze na podstawie wartości określonej właściwości. Metoda może również pobrać pierwszy element w kontenerze lub element, który następuje po określonym elemencie. Jeśli zostanie znaleziony pasujący element podrzędny, FindItemByProperty pobiera interfejs IUIAutomationElement dla elementu. Jeśli jednak element podrzędny jest zwirtualizowany, interfejs IUIAutomationElement działa jako symbol zastępczy. Błąd UIA_E_ELEMENTNOTAVAILABLE występuje, gdy klient próbuje użyć interfejsu IUIAutomationElement w celu pobrania wartości właściwości lub metod wywołania, które nie są jeszcze dostępne. Dostępność właściwości lub metod za pośrednictwem symbolu zastępczego zależy od implementacji kontrolki. Jedynym wymaganiem dla symbolu zastępczego jest obsługa interfejsu IUIAutomationVirtualizedItemPattern.
Błąd UIA_E_ELEMENTNOTAVAILABLE wskazuje klientowi, że element może być zwirtualizowany. Klient powinien odpowiedzieć, pobierając interfejs IUIAutomationVirtualizedItemPattern dla elementu, a następnie zrealizować element, wywołując metodę IUIAutomationVirtualizedItemPattern::Realize. Jeśli to powiedzie się, interfejs IUIAutomationElement jest w pełni funkcjonalny ze wszystkimi odpowiednimi dostępnymi właściwościami.
W zależności od implementacji kontrolki, wywołanie IUIAutomationVirtualizedItemPattern::Realize może spowodować przewinięcie elementu do widoku. Jednak klient nie powinien polegać na przewijaniu elementu do widoku ani na jego uwidocznieniu. Aby upewnić się, że element jest widoczny, klient może użyć metody IUIAutomationScrollItemPattern::ScrollIntoView.
Przykład
Na przykład kod pokazujący sposób korzystania z obsługi automatyzacji interfejsu użytkownika na potrzeby wirtualizacji, zobacz Jak pobrać zwirtualizowany element.
Tematy pokrewne
-
Wzorce kontrolek automatyzacji interfejsu użytkownika — omówienie