Share via


Compatibilidad de UI Automation para el tipo de control DataItem

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.

En este tema se ofrece información sobre la compatibilidad de Automatización de la interfaz de usuario de Microsoft con el tipo de control DataItem. En Automatización de la interfaz de usuario, un tipo de control es un conjunto de condiciones que un control debe cumplir para poder usar la propiedad ControlTypeProperty. Las condiciones incluyen directrices específicas para la estructura de árbol de Automatización de la interfaz de usuario, los valores de propiedad de Automatización de la interfaz de usuario y los patrones de control.

Una entrada de una lista de contactos es un ejemplo de un control de elemento de datos. Un control de elemento de datos contiene información de interés para un usuario final. Es más complicado que el elemento de lista simple porque contiene información más completa.

En las secciones siguientes se definen la estructura de árbol, las propiedades, los patrones de control y los eventos para el tipo de control DataItem de Automatización de la interfaz de usuario necesarios. Los requisitos de Automatización de la interfaz de usuario se aplican a todos los controles de elemento de datos, ya sea Windows Presentation Foundation (WPF), Win32 o Windows Forms.

Estructura de árbol de Automatización de la interfaz de usuario necesaria

En la tabla siguiente se describe la vista de control y la vista de contenido del árbol de Automatización de la interfaz de usuario que pertenece a los controles de elemento de datos y se describe lo que puede incluirse en cada vista. Para más información sobre el árbol de UI Automation, vea Información general del árbol de UI Automation.

Árbol de Automatización de la interfaz de usuario: vista de control Árbol de Automatización de la interfaz de usuario: vista de contenido
DataItem

- Varía (0 o más; se puede estructurar en jerarquía)
DataItem

- Varía (0 o más; se puede estructurar en jerarquía)

Un elemento de datos de una cuadrícula de datos puede hospedar diversos objetos, entre los que se incluye otra capa de elementos de datos o elementos de cuadrícula concretos como controles de edición, texto o imágenes. Si el elemento de datos tiene un rol de objeto concreto, el elemento debe exponerse como un tipo de control concreto; por ejemplo, un tipo de control ListItem para un elemento de datos seleccionable de la cuadrícula.

Propiedades de Automatización de la interfaz de usuario necesarias

En la tabla siguiente se muestran las propiedades que tienen un valor o una definición que es especialmente relevante para los controles de elemento de datos. 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 para clientes.

Propiedad Valor Notas
AutomationIdProperty Vea las notas. El valor de esta propiedad debe ser único en todos los controles de una aplicación.
BoundingRectangleProperty Vea las notas. El rectángulo exterior que contiene el control completo.
ClickablePointProperty Vea las notas. Se admite si hay un rectángulo delimitador. Si no todos los puntos que se encuentran dentro del rectángulo delimitador son seleccionables, y realiza pruebas de aciertos especializadas, invalide y ofrezca un punto en el que hacer clic.
ControlTypeProperty DataItem Este valor es el mismo para todos los marcos de trabajo de la interfaz de usuario.
IsContentElementProperty True El control de elemento de datos siempre debe ser contenido.
IsControlElementProperty True El control de elemento de datos siempre debe ser un control.
IsKeyboardFocusableProperty Vea las notas. Si el control puede recibir el foco del teclado, debe admitir esta propiedad.
ItemStatusProperty Vea las notas. Si el control contiene un estado que se actualiza dinámicamente, se debe admitir esta propiedad para que una tecnología de asistencia pueda recibir actualizaciones cuando cambia el estado del elemento.
ItemTypeProperty Vea las notas. Este es el valor de cadena que transmite al usuario final el objeto subyacente que representa el elemento. Algunos ejemplos son "Archivo multimedia" o "Contacto".
LabeledByProperty Null Los controles de elemento de datos no tienen una etiqueta de texto estático.
LocalizedControlTypeProperty "elemento de datos" Cadena localizada que corresponde al tipo de control DataItem.
NameProperty Vea las notas. El control de elemento de datos siempre contiene un elemento de texto principal que está relacionado con lo que el usuario asociaría como el identificador más semántico para el elemento.

Patrones de control de Automatización de la interfaz de usuario necesarios

En la tabla siguiente se muestran los patrones de control de Automatización de la interfaz de usuario de Microsoft que se deben admitir por todos los controles de elemento de datos. Para más información sobre los patrones de control, vea UI Automation Control Patterns Overview.

Patrón de control Soporte técnico Notas
IExpandCollapseProvider Depende Si el elemento de datos se puede expandir o contraer para mostrar y ocultar información, se debe admitir el patrón ExpandCollapse.
IGridItemProvider Depende Los elementos de datos admitirán el patrón GridItem cuando una colección de elementos de datos esté disponible dentro de un contenedor en el que se pueda navegar espacialmente de un elemento a otro.
IScrollItemProvider Depende Todos los elementos de datos admiten la capacidad de desplazamiento para verlos con el patrón ScrollItem cuando su contenedor de datos tiene más elementos de los que caben en la pantalla.
ISelectionItemProvider Todos los elementos de datos deben admitir el patrón SelectionItem para indicar cuándo está seleccionado el elemento.
ITableItemProvider Depende Si el elemento de datos contenido dentro de un tipo de control DataGrid admitirá este patrón.
IToggleProvider Depende Si el elemento de datos contiene un estado que se puede recorrer cíclicamente.
IValueProvider Depende Si el texto primario del elemento de datos es editable, se debe admitir el patrón Value.

Trabajar con elementos de datos en listas grandes

Las listas grandes suelen ser datos virtualizados dentro de marcos de la interfaz de usuario para ayudar al rendimiento. Debido a esto, un cliente de Automatización de la interfaz de usuario no puede usar la característica de consulta Automatización de la interfaz de usuario para extraer el contenido del árbol completo de la misma manera en que lo hace con otros contenedores de elementos. Un cliente debe desplazar el elemento a la vista (o expandir el control para mostrar todas las opciones importantes) antes de acceder al conjunto completo de información del elemento de datos.

Al llamar a SetFocus en el elemento de Automatización de la interfaz de usuario del elemento de datos, el caso de Microsoft Windows Explorer devolverá correctamente y el foco se establecerá en la edición dentro del subárbol del elemento de datos.

Eventos de Automatización de la interfaz de usuario necesarios

En la siguiente tabla se muestran los eventos de Automatización de la interfaz de usuario que deben admitir todos los controles de elemento de datos. Para más información sobre eventos, vea UI Automation Events Overview.

Evento de Automatización de la interfaz de usuario Soporte técnico Notas
AutomationFocusChangedEvent Obligatorio None
Evento cambiado por propiedadBoundingRectangleProperty . Obligatorio None
Evento cambiado por propiedadIsEnabledProperty . Obligatorio None
Evento cambiado por propiedadIsOffscreenProperty . Obligatorio None
Evento cambiado por propiedadNameProperty . Obligatorio None
StructureChangedEvent Obligatorio None
InvokedEvent Depende None
Evento cambiado por propiedadExpandCollapseStateProperty . Depende None
ElementAddedToSelectionEvent Obligatorio None
ElementRemovedFromSelectionEvent Obligatorio None
ElementSelectedEvent Obligatorio None
Evento cambiado por propiedadToggleStateProperty . Depende None
Evento cambiado por propiedadValueProperty . Depende None

Ejemplo de tipo de control DataItem

En la imagen siguiente se muestra un tipo de control DataItem en un control List View con compatibilidad con información completa para las columnas.

Graphic of a List View control with two data items

Las vistas de control y de contenido del árbol de Automatización de la interfaz de usuario que pertenece al control de elemento de datos se muestran a continuación. Los patrones de control de cada elemento de automatización se muestran entre paréntesis. El grupo "Contoso" también forma parte de la cuadrícula del control de host Data Grid.

Árbol de Automatización de la interfaz de usuario: vista de control Árbol de Automatización de la interfaz de usuario: vista de contenido
- Group "Contoso" (Table, Grid)
- DataItem "Accounts Receivable.doc" (TableItem, GridItem, SelectionItem, Invoke)
- Image "Accounts Receivable.doc"
- Edit "Name" (TableItem, GridItem, Value "Accounts Receivable.doc")
- Edit "Date modified" (TableItem, GridItem, Value "8/25/2006 3:29 PM")
- Edit "Size" (GridItem, TableItem, Value "11.0 KB)
- DataItem "Accounts Payable.doc" (TableItem, GridItem, SelectionItem, Invoke)
- ...
- Group "Contoso" (Table, Grid)
- DataItem "Accounts Receivable.doc" (TableItem, GridItem, SelectionItem, Invoke)
- Image "Accounts Receivable.doc"
- Edit "Name" (TableItem, GridItem, Value "Accounts Receivable.doc")
- Edit "Date modified" (TableItem, GridItem, Value "8/25/2006 3:29 PM")
- Edit "Size" (GridItem, TableItem, Value "11.0 KB)
- DataItem "Accounts Payable.doc" (TableItem, GridItem, SelectionItem, Invoke)
- …

Si una cuadrícula representa una lista de elementos seleccionables, los elementos de la interfaz de usuario correspondientes se pueden exponer con el tipo de control ListItem en lugar del tipo de control DataItem. En el ejemplo anterior, los elementos DataItem ("Accounts Receivable.doc" y "Accounts Payable.doc") de Group ("Contoso") se pueden mejorar si se exponen como tipos de control ListItem, porque ese tipo ya admite el patrón de control SelectionItem.

Consulte también