Patrones de controles de UI Automation para clientes

Nota

Esta documentación está dirigida a los desarrolladores de .NET Framework que quieran usar las clases de automatización de la interfaz de usuario administradas definidas en el espacio de nombres System.Windows.Automation. Para ver la información más reciente acerca de la automatización de la interfaz de usuario, consulte Windows Automation API: automatización de la interfaz de usuario.

Este tema es una introducción a los patrones de control para clientes de automatización de la interfaz de usuario. Incluye información que explica cómo un cliente de automatización de la interfaz de usuario puede usar los patrones de control para tener acceso a la información sobre la interfaz de usuario.

Los patrones de control proporcionan una manera de categorizar y exponer la funcionalidad de un control independientemente de su tipo o apariencia. Los clientes de automatización de la interfaz de usuario pueden examinar un AutomationElement para determinar qué patrones de control son compatibles y estar seguros del comportamiento del control.

Para obtener una lista completa de los patrones de control, vea UI Automation Control Patterns Overview.

Obtener patrones de control

Los clientes recuperan un patrón de control de un AutomationElement mediante una llamada a AutomationElement.GetCachedPattern o AutomationElement.GetCurrentPattern.

Los clientes pueden usar el método GetSupportedPatterns o una propiedad IsPatternAvailable individual (por ejemplo, IsTextPatternAvailableProperty) para determinar si se admite un patrón o un grupo de patrones en el AutomationElement. Sin embargo, resulta más eficaz intentar obtener el patrón de control y comprobar si hay una referencia null que comprobar las propiedades compatibles y recuperar el patrón de control, ya que se generan menos llamadas entre procesos.

En el siguiente ejemplo se muestra cómo obtener un patrón de control TextPattern de un AutomationElement.

// Specify the control type we're looking for, in this case 'Document'
PropertyCondition cond = new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Document);

// target --> The root AutomationElement.
AutomationElement textProvider = target.FindFirst(TreeScope.Descendants, cond);

targetTextPattern = textProvider.GetCurrentPattern(TextPattern.Pattern) as TextPattern;

if (targetTextPattern == null)
{
    Console.WriteLine("Root element does not contain a descendant that supports TextPattern.");
    return;
}

Recuperar propiedades en patrones de control

Para recuperar los valores de propiedad en los patrones de control, los clientes pueden llamar a AutomationElement.GetCachedPropertyValue o AutomationElement.GetCurrentPropertyValue y convertir el objeto devuelto al tipo apropiado. Para más información sobre las propiedades de automatización de la interfaz de usuario, vea Propiedades de Automatización de la interfaz de usuario Properties for clients.

Además de los métodos GetPropertyValue, los valores de propiedad se pueden recuperar mediante los descriptores de acceso de Common Language Runtime (CLR) para acceder a las propiedades de automatización de la interfaz de usuario en un patrón.

Controles con patrones variables

Algunos tipos de controles admiten patrones diferentes en función de su estado o de la manera en la que se usan. Algunos ejemplos de controles que pueden tener patrones variables son las vistas de lista (miniaturas, mosaicos, iconos, lista, detalles), los gráficos de Microsoft Excel (circulares, de líneas, de barras, valores de celda con fórmulas), el área de documento de Microsoft Word (Normal, Diseño Web, Esquema, Diseño de impresión, Vista previa de impresión) y las máscaras de Media Player de Microsoft Windows.

Los controles que implementan tipos de controles personalizados pueden tener cualquier conjunto de patrones de control que sea necesario para representar su funcionalidad.

Consulte también