UIElement.Holding Evento

Definición

Se produce cuando se produce una interacción de suspensión no controlada sobre el área de prueba de posicionamiento de este elemento.

public:
 virtual event HoldingEventHandler ^ Holding;
// Register
event_token Holding(HoldingEventHandler const& handler) const;

// Revoke with event_token
void Holding(event_token const* cookie) const;

// Revoke with event_revoker
UIElement::Holding_revoker Holding(auto_revoke_t, HoldingEventHandler const& handler) const;
public event HoldingEventHandler Holding;
function onHolding(eventArgs) { /* Your code */ }
uIElement.addEventListener("holding", onHolding);
uIElement.removeEventListener("holding", onHolding);
- or -
uIElement.onholding = onHolding;
Public Custom Event Holding As HoldingEventHandler 
<uiElement Holding="eventhandler"/>

Tipo de evento

Comentarios

La función táctil puede producir una acción Mantener , pero los dispositivos del mouse generalmente no pueden. Para obtener más información, consulta Controlar la entrada del puntero.

Los eventos Tapped, DoubleTapped y RightTapped solo se producen después de quitar el punto táctil. Pero el evento Holding inicial se produce mientras el punto táctil sigue en contacto. El evento se produce si el punto táctil permanece aproximadamente en la misma posición de PointerPoint durante un período de tiempo. El tiempo exacto de lo que el sistema interpreta como una acción de retención es ajustable por los usuarios a través de la configuración del sistema.

La retención está pensada para la interfaz de usuario informativa, pero para interacciones como mostrar un menú contextual, debe usar RightTapped en su lugar. Puede controlar holding first para mostrar una sugerencia de que aparecerá un menú, pero para mostrar el propio menú, use un controlador RightTapped . Consulta Diseño de interacción táctil o directrices de experiencia del usuario para obtener más información sobre cómo usar una interacción de suspensión en el diseño de la aplicación.

Por lo general, los eventos de retención se producen en pares. Cuando la acción se interpreta por primera vez como una acción Hold en función de ningún movimiento durante un período de tiempo, Holding se desencadena, con el valor HoldingState de Started en los datos del evento HoldingRoutedEventArgs . Cuando finaliza la acción Mantener , se desencadena otro evento Holding, esta vez con HoldingState de Completado o Cancelado.

  • La acción Mantener termina con HoldingState como Completado si el usuario no mueve el puntero durante el estado De suspensión y, a continuación, libera los puntos de puntero que iniciaron la acción. En este caso, RightTapped se activa justo después del segundo evento Holding.

  • La acción Mantener finaliza con HoldingState como Cancelado si el usuario mueve los punteros que iniciaron la acción, o también para situaciones poco frecuentes, como cambiar el estado de la prueba de posicionamiento en el elemento durante la acción o capturar otro puntero. Si la acción Mantener termina con HoldingState como Cancelado, RightTapped no se activará.

Un evento Holding representa un gesto, mientras que un evento PointerPressed es un evento de entrada de nivel inferior. La retención de eventos y PointerPressed puede desencadenarse como resultado de una única interacción del usuario. Incluso si un control ya controla los eventos de puntero en la lógica de control o controla las manipulaciones, esto no impide que se active Holding.

Un evento Holding puede ser el resultado de más de un punto de puntero. Para los eventos de gestos de nivel superior, como Mantener, ya no tiene acceso inmediato a los detalles de PointerPoint , como los valores individuales de PointerId o las coordenadas individuales. Tiene acceso al tipo de dispositivo (PointerDeviceType) y, para las coordenadas, puede llamar a GetPosition, lo que proporciona un promedio de las coordenadas de una suspensión desde más de un punto de puntero.

La retención es un evento enrutado. Además, un elemento debe tener IsHoldingEnabledtrue para que sea un origen de eventos Holding (true es el valor predeterminado). Es posible controlar Holding en elementos primarios incluso si IsHoldingEnabled es false en el elemento primario, si el evento se propaga a un elemento primario desde un elemento secundario de origen de eventos donde IsHoldingEnabled es false. Para obtener más información sobre el concepto de evento enrutado, consulta Información general sobre eventos y eventos enrutados.

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 las pruebas de posicionamiento. Para obtener más información, consulta Introducción a eventos y eventos enrutados.

Mantener admite la capacidad de adjuntar controladores de eventos a la ruta que se invocará incluso si los datos del evento se marcan como Handled. Consulte AddHandler.

Los controles de Windows Runtime específicos pueden tener control basado en clases para el evento Holding. Si es así, el control probablemente tiene una invalidación para el método OnHolding. Para obtener más información sobre cómo funciona el control basado en clases de eventos, consulte Información general sobre eventos y eventos enrutados.

Tapped y Holding son mutuamente excluyentes. Si la acción pasa el umbral de tiempo para considerarse una acción De suspensión , tampoco se considera una acción De pulsar .

Siempre que Holding se active inicialmente, siempre que el elemento admita eventos de manipulación a través de un valor ManipulationMode no predeterminado, ManipulationStarting también se activa. Si el punto de puntero permanece en un lugar lo suficientemente largo para que se detecte Holding, pero, a partir de entonces, el usuario mueve los puntos de puntero asociados a la acción Mantener sin liberarlos (lo que conduce a otro evento Holding con HoldingState como Cancelado), otros eventos de manipulación como ManipulationStarted y ManipulationDelta también se pueden activar.

Mantener presionada la entrada del mouse y lápiz/lápiz

La entrada del mouse no genera eventos holding de forma predeterminada, independientemente de cuánto tiempo se mantenga presionado un botón del mouse o qué botón se mantiene presionado. Sin embargo, los dispositivos del mouse y algunos dispositivos de lápiz pueden activarSe con la tecla RightTapped cuando se presiona y suelta un botón derecho del mouse o equivalente.

Nota

Hay una manera de tratar las acciones del mouse como acciones de suspensión si usa su propio GestureRecognizer y especifica HoldWithMouse en la configuración.

Se aplica a

Consulte también