UIElement.PointerExited Evento
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Se produce cuando un puntero sale del área de prueba de posicionamiento de este elemento.
public:
virtual event PointerEventHandler ^ PointerExited;
// Register
event_token PointerExited(PointerEventHandler const& handler) const;
// Revoke with event_token
void PointerExited(event_token const* cookie) const;
// Revoke with event_revoker
UIElement::PointerExited_revoker PointerExited(auto_revoke_t, PointerEventHandler const& handler) const;
public event PointerEventHandler PointerExited;
function onPointerExited(eventArgs) { /* Your code */ }
uIElement.addEventListener("pointerexited", onPointerExited);
uIElement.removeEventListener("pointerexited", onPointerExited);
- or -
uIElement.onpointerexited = onPointerExited;
Public Custom Event PointerExited As PointerEventHandler
<uiElement PointerExited="eventhandler"/>
Tipo de evento
Comentarios
El evento PointerExited se desencadena en respuesta a un puntero que se encontraba inicialmente en el área de límite del elemento dejando ese área delimitador. Las interacciones táctiles, de mouse y lápiz/lápiz se reciben, procesan y administran como entrada de puntero en la aplicación para UWP. Cualquiera de estos dispositivos y sus interacciones pueden producir un evento PointerExited. Para obtener más información, consulta Controlar la entrada del puntero y los demás comentarios de este tema.
Use un controlador basado en PointerEventHandler para controlar este evento.
En el caso de las acciones táctiles y también de los eventos de manipulación o específicos de la interacción que son consecuencia de una acción táctil, un elemento debe ser visible en la prueba de acceso para poder ser origen de eventos y generar el evento que está asociado a la acción. UIElement.Visibility debe ser Visible. Otras propiedades de los tipos derivados también afectan a la visibilidad de la prueba de posicionamiento. Para obtener más información, consulta Introducción a eventos y eventos enrutados.
PointerExited admite la capacidad de adjuntar controladores de eventos a la ruta que se invocarán incluso si los datos del evento se marcan como Controlado. Consulte AddHandler.
Los controles de Windows Runtime específicos pueden tener control basado en clases para el evento de entrada PointerExited. Si es así, es probable que el control tenga una invalidación para el método OnPointerExited. Normalmente, el evento no está marcado como controlado por el controlador de clase, por lo que el código de usuario puede controlar el evento PointerExited para el control en la interfaz de usuario. Para obtener más información sobre cómo funciona el control basado en clases para eventos, consulta Información general sobre eventos y eventos enrutados.
Si otro elemento ha capturado el puntero, PointerExited no se activará aunque el puntero capturado deje los límites de un elemento. Para obtener más información sobre la captura de punteros, consulta Interacciones de CapturePointer o Mouse.
PointerExited para la entrada del mouse y el lápiz/lápiz
Un dispositivo de entrada del mouse tiene un cursor en pantalla que es visible cada vez que se mueve el mouse, incluso si no se presiona ningún botón del mouse en el momento. Hay un comportamiento similar disponible para la entrada del dispositivo de lápiz, donde los dispositivos de entrada pueden detectar que el lápiz óptico mantiene el puntero sobre la superficie del dispositivo de entrada (IsInRange), pero no lo toca. La entrada del mouse y el dispositivo de lápiz desencadenarán eventos PointerExited en casos ligeramente diferentes que los eventos táctiles. Para obtener más información, consulta Interacciones de mouse. Se desencadena un evento PointerExited después del último evento PointerMoved para el elemento.
PointerExited para la entrada táctil
Un punto táctil solo es detectable si un dedo está tocando la superficie. Cada vez que una acción táctil da como resultado un evento PointerReleased , ese evento va seguido inmediatamente de un evento PointerExited, con todos los datos del evento que son la misma información para los dos eventos (mismo identificador de puntero, misma posición, etc.). En otras palabras, el puntero se considera que entra en el elemento en el momento y la posición en que el elemento se toca mediante un punto táctil.
Como alternativa, un punto táctil generará PointerExited si ese puntero permanece en contacto constante con la superficie a medida que se mueve, estaba sobre el elemento inicialmente y, a continuación, sale de los límites de prueba de posicionamiento de un elemento. Para estos tipos de acciones táctiles, también es posible que la acción se pueda procesar como una manipulación, o como un gesto, en lugar de un evento de puntero. Para obtener más información, consulta Controlar la entrada del puntero.
Comportamiento del evento enrutado para PointerExited
PointerExited es un evento enrutado. Para obtener más información sobre el concepto de eventos enrutados, consulta Información general sobre eventos y eventos enrutados. Puedes definir varios eventos PointerExited para los elementos de una interfaz de usuario XAML, incluidos los elementos que están en una relación de elementos primarios y secundarios. En una composición típica de la interfaz de usuario, los elementos secundarios están en algún lugar dentro de los límites de un elemento primario, por lo que el evento PointerExited se producirá primero para el elemento secundario cuando el puntero salga del elemento secundario y, a continuación, para el elemento primario cuando el puntero se mueva completamente fuera de ese elemento primario. El evento PointerExited no suele propagarse al elemento primario cuando el elemento secundario lo desencadena, ya que sería confuso que el sistema de entrada enrute también la aparición del evento PointerExited al elemento primario. Normalmente no quiere que los eventos PointerExited se enruten de todos modos, solo quiere procesarlos desde el remitente. Puede evitar explícitamente el enrutamiento de eventos estableciendo Handled entrue en el controlador.
En raras ocasiones, es posible ver una burbuja de evento PointerExited al elemento primario. Por ejemplo, si ha usado un RenderTransform para desplazar un elemento secundario fuera de los límites de su elemento primario, el evento se propaga al elemento primario cuando se sale del elemento secundario y proporciona la información del evento tal y como indica cómo el elemento secundario desencadenó el evento.
PunteroIntroducción de estados visuales para controles
Los controles que tienen plantillas de control pueden aplicar estados visuales que están activos solo cuando un puntero está por encima de los límites del control. No siempre es necesario controlar PointerEntered o PointerExited para obtener o cambiar este comportamiento. Es posible que tenga que volver a crear una plantilla del control. Si deriva de un control existente que ya tiene el control de entrada de bajo nivel que invoca estados visuales, debe proporcionar un estado visual denominado "PointerOver" en el visualStateGroup "CommonStates" y la lógica de control integrada cargará ese estado visual siempre que un puntero esté sobre el control. Un estado visual para puntero a través suele estar presente en los controles que se pueden invocar o seleccionar, como un Button o ListViewItem. Si deriva de una clase base como Control que no tiene control de eventos de entrada integrado que invoca estados visuales, es posible que tenga que invalidar OnPointerEntered y OnPointerExited para obtener este comportamiento. Use OnPointerExited para llamar a GoToState para cargar un estado distinto del estado "PointerOver", por ejemplo"Normal". Para obtener más información, consulta Animaciones con guion gráfico para estados visuales.
Comportamiento de Windows 8
Para Windows 8, por lo general, el evento PointerEntered no se activará si el cursor en pantalla (o lápiz o punto táctil) no se movió realmente. Por ejemplo, PointerEntered no se activa si el mouse y su cursor en pantalla permanece estático, y un objeto con un controlador PointerEntered tiene su posición traducida o ajustada de otro modo para moverse debajo del cursor en pantalla. O bien, PointerEntered no se activa si un elemento como un elemento emergente o un control flotante desaparece y el puntero está ahora sobre un nuevo elemento (pero el puntero aún no se ha movido). Relacionado con esto es el comportamiento PointerExited. Por ejemplo, si un elemento emergente se descarta mediante programación, no activará PointerExited si el puntero no se movió como causa de descartarlo. Todavía obtendría un evento PointerEntered si el puntero se mueve mientras se desplaza sobre el elemento recién revelado, pero eso es para el usuario si eso ocurrirá y ocurre en el momento del movimiento, no en el momento del descarte. En resumen, intentar usar el último elemento que desencadenó PointerEntered para la determinación del estado de puntero en la interfaz de usuario de la aplicación no es completo en Windows 8 y hay muchos escenarios en los que PointerEntered y PointerExited no se emparejan. Esto afecta también a los estados visuales de los controles que usan PointerEntered y PointerExited como desencadenadores.
A partir de Windows 8.1, PointerExited se desencadena en cualquier caso en el que el puntero hubiera desencadenado a la vez un evento PointerEntered, pero algún cambio de estado de la interfaz de usuario se produce cuando el puntero ya no está dentro de ese elemento. Esto incluye casos en los que desaparece todo el elemento. Y si el puntero está ahora sobre un elemento diferente porque un elemento anterior desapareció, ese elemento activa PointerEntered, incluso si el puntero nunca se mueve. Los elementos que establecen su visibilidad en Collapsed mediante programación es una manera de que los elementos desaparezcan de la interfaz de usuario y el comportamiento de Windows 8.1 tenga en cuenta esto y activará PointerExited para el elemento Collapsed y PointerEntered para el elemento recién revelado.
Si migras el código de la aplicación de Windows 8 a Windows 8.1 quizás quieras tener en cuenta este cambio de comportamiento, ya que da como resultado que PointerExited y PointerEntered se activen en casos en los que no se hayan desencadenado antes.
Las aplicaciones compiladas para Windows 8 que se ejecuten en Windows 8.1 siguen usando el comportamiento de Windows 8.