Utilisation d’éléments virtualisés
Cette rubrique explique comment utiliser les fonctionnalités fournies par les modèles de contrôle ItemContainer et VirtualizedItem pour rechercher et récupérer des informations sur les éléments virtualisés.
- Vue d’ensemble de la virtualisation
- Comment un contrôle prend en charge la virtualisation
- Comment les clients recherchent et réalisent des éléments virtualisés
- Exemple
- Rubriques connexes
Vue d’ensemble de la virtualisation
Les contrôles qui contiennent un grand nombre d’éléments enfants peuvent utiliser la virtualisation pour gérer efficacement les éléments. Avec la virtualisation, le contrôle conserve les informations complètes en mémoire pour un sous-ensemble d’éléments à un moment donné. En règle générale, le sous-ensemble comprend uniquement les éléments qui sont actuellement visibles pour l’utilisateur. Les informations complètes sur les autres éléments virtualisés sont conservées dans le stockage et sont chargées en mémoire, ou réalisées, car le contrôle en a besoin, par exemple, lorsque de nouveaux éléments sont visibles par l’utilisateur.
Les contrôles qui utilisent la virtualisation représentent un défi, car seuls les éléments réalisés sont entièrement disponibles sous forme d’éléments Microsoft UI Automation dans l’arborescence UI Automation. Les éléments virtualisés n’existent pas dans l’arborescence, donc les informations les concernant ne sont pas disponibles pour les clients. Pour récupérer des informations sur les éléments virtualisés, les clients ont besoin d’un moyen de forcer l’automatisation de l’interface utilisateur à transmettre la demande pour réaliser les éléments du contrôle. Une fois les éléments réalisés, UI Automation peut créer des éléments UI Automation pour eux. UI Automation comprend deux modèles de contrôle pour permettre aux clients de travailler avec des éléments virtualisés : ItemContainer et VirtualizedItem.
Comment un contrôle prend en charge la virtualisation
Tout contrôle pouvant contenir des éléments virtualisés doit prendre en charge le modèle de contrôle ItemContainer . En outre, tout élément qui peut être virtualisé doit prendre en charge le modèle de contrôle VirtualizedItem . Les fonctionnalités exposées par les modèles de contrôle ItemContainer et VirtualizedItem sont accessibles aux clients via les interfaces IUIAutomationItemContainerPattern et IUIAutomationVirtualizedItemPattern .
Comment les clients recherchent et réalisent des éléments virtualisés
Les clients peuvent utiliser la méthode IUIAutomationItemContainerPattern :: FindItemByProperty pour rechercher des éléments enfants dans le conteneur en fonction de la valeur d’une propriété particulière. La méthode peut également récupérer le premier élément dans le conteneur ou l’élément qui suit l’élément spécifié. Si un élément enfant correspondant est trouvé, FindItemByProperty récupère une interface IUIAutomationElement pour l’élément. Toutefois, si l’élément enfant est virtualisé, l’interface IUIAutomationElement est un espace réservé. L’erreur UIA _ E _ ELEMENTNOTAVAILABLE se produit lorsque le client tente d’utiliser l’interface IUIAutomationElement pour récupérer des valeurs de propriété ou appeler des méthodes qui ne sont pas encore disponibles. Les propriétés ou méthodes disponibles via un espace réservé dépendent de l’implémentation du contrôle. La seule exigence pour un espace réservé consiste à prendre en charge l’interface IUIAutomationVirtualizedItemPattern .
L’erreur UIA _ E _ ELEMENTNOTAVAILABLE indique au client qu’un élément peut être virtualisé. Le client doit répondre en récupérant l’interface IUIAutomationVirtualizedItemPattern pour l’élément, puis en réalisant l’élément en appelant la méthode IUIAutomationVirtualizedItemPattern :: réalise . Si cela se déroule correctement, l’interface IUIAutomationElement est entièrement fonctionnelle avec toutes les propriétés appropriées disponibles.
En fonction de l’implémentation du contrôle, l’appel de IUIAutomationVirtualizedItemPattern :: provision peut entraîner le défilement de l’élément par le contrôle. Toutefois, un client ne doit pas s’appuyer sur l’élément qui fait défiler l’affichage ou le rendre visible. Pour vous assurer que l’élément est visible, le client peut utiliser la méthode IUIAutomationScrollItemPattern :: ScrollIntoView .
Exemple
Pour obtenir un exemple de code qui montre comment utiliser la prise en charge d’UI Automation pour la virtualisation, consultez Comment récupérer un élément virtualisé.