Implementar el patrón de control ExpandCollapse de UI Automation

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 presentan las directrices y convenciones para implementar IExpandCollapseProvider, incluida la información sobre propiedades, métodos y eventos. Al final de la información general se proporcionan vínculos a referencias adicionales.

El patrón de control ExpandCollapsePattern se usa para admitir controles que se expanden visualmente para mostrar más contenido y se contraen para ocultarlo. Para obtener ejemplos de controles que implementan este patrón de control, vea Control Pattern Mapping for UI Automation Clients.

Directrices y convenciones de implementación

Al implementar el patrón de control ExpandCollapse, tenga en cuenta las siguientes directrices y convenciones:

  • Los controles agregados, compilados con objetos secundarios que proporcionan la funcionalidad de expandir y contraer a la interfaz de usuario, deben ser compatibles con el patrón de control ExpandCollapsePattern , mientras que sus elementos secundarios no tienen que serlo. Por ejemplo, se crea un control de cuadro combinado con una combinación de cuadro de lista, botón y controles de edición, pero solo el cuadro combinado primario debe ser compatible con el ExpandCollapsePattern.

    Nota

    Una excepción es el control de menú, que es un agregado de objetos MenuItem individuales. Los objetos MenuItem son compatibles con el patrón de control ExpandCollapsePattern , pero el control Menú primario no lo es. Se aplica una excepción similar a los controles Árbol y Elemento de árbol.

  • Si el ExpandCollapseState de un control se establece en LeafNode, toda funcionalidad ExpandCollapsePattern está actualmente inactiva para el control y la única información que se puede obtener mediante este patrón de control es ExpandCollapseState. Si posteriormente se agrega cualquier objeto secundario, ExpandCollapseState cambia y se activa la funcionalidad ExpandCollapsePattern .

  • ExpandCollapseState hace referencia únicamente a la visibilidad de los objetos secundarios inmediatos, no a la visibilidad de todos los objetos descendientes.

  • La funcionalidad de expandir y contraer es específica del control. A continuación se muestran ejemplos de este comportamiento.

    • El menú Personal de Office puede ser un MenuItem de tres estados (Expanded, Collapsed y PartiallyExpanded), donde el control especifica el estado que se debe adoptar cuando se llama a un Expand o Collapse .

    • Llamar a Expand en un objeto TreeItem puede hacer que se muestren todos los descendientes o solo los elementos secundarios inmediatos.

    • Si llamar a Expand o Collapse en un control mantiene el estado de sus descendientes, debería enviarse un evento de cambio de visibilidad, no un evento de cambio de estado. Si el control primario no mantiene el estado de sus descendientes cuando se contrae, el control podría destruir todos los descendientes que ya no estén visibles y generar un evento destruido; o podría cambiar la ExpandCollapseState de cada descendiente y generar un evento de cambio de visibilidad.

  • Para garantizar la navegación, es deseable que un objeto esté en el árbol de UI Automation (con el estado de visibilidad adecuado) independientemente de sus elementos primarios ExpandCollapseState. Si los descendientes se generan a petición, solo pueden aparecer en el árbol UI Automation después de que se muestren por primera vez o solo mientras estén visibles.

Miembros requeridos para IExpandCollapseProvider

Para implementar IExpandCollapseProvider, se requieren las siguientes propiedades y métodos.

Miembros requeridos Tipo de miembro Notas
ExpandCollapseState Propiedad None
Expand Método None
Collapse Método None
AutomationPropertyChangedEventHandler Evento Este control no tiene ningún evento asociado; use este delegado genérico.

Excepciones

Los proveedores deben producir las siguientes excepciones.

Tipo de excepción Condición
InvalidOperationException Se llama a Expand o Collapse cuando ExpandCollapseState = LeafNode.

Consulte también