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 | Sí | 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.
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.