UIElement.PointerPressed 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 el dispositivo de puntero inicia una acción Press dentro de este elemento.
public:
virtual event PointerEventHandler ^ PointerPressed;
// Register
event_token PointerPressed(PointerEventHandler const& handler) const;
// Revoke with event_token
void PointerPressed(event_token const* cookie) const;
// Revoke with event_revoker
UIElement::PointerPressed_revoker PointerPressed(auto_revoke_t, PointerEventHandler const& handler) const;
public event PointerEventHandler PointerPressed;
function onPointerPressed(eventArgs) { /* Your code */ }
uIElement.addEventListener("pointerpressed", onPointerPressed);
uIElement.removeEventListener("pointerpressed", onPointerPressed);
- or -
uIElement.onpointerpressed = onPointerPressed;
Public Custom Event PointerPressed As PointerEventHandler
<uiElement PointerPressed="eventhandler"/>
Tipo de evento
Comentarios
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 estas interacciones puede producir un evento PointerPressed. Para obtener más información, consulta Controlar la entrada del puntero. Los eventos de puntero están diseñados para escenarios en los que está interesado en varios punteros y sus relaciones, o cuando se examinan detalles de cada puntero, como la posición de coordenada exacta. De lo contrario, puede considerar la posibilidad de controlar eventos de gestos como Tapped.
Use un controlador basado en PointerEventHandler para controlar este evento.
La entrada de mouse se asocia con un solo puntero que se asigna cuando se detecta por primera vez la entrada. Al hacer clic en un botón del mouse (izquierdo, rueda o derecho), se crea una asociación secundaria entre el puntero y ese botón a través del evento PointerPressed. El evento PointerReleased solo se desencadena cuando se libera ese mismo botón del mouse (no se puede asociar ningún otro botón con el puntero hasta que se complete este evento). Debido a esta asociación exclusiva, los clics de otros botones del mouse se enrutan a través del evento PointerMoved. Puede probar el estado del botón del mouse al controlar este evento, como se muestra en el ejemplo siguiente.
private void Target_PointerMoved(object sender, PointerRoutedEventArgs e)
{
Windows.UI.Xaml.Input.Pointer ptr = e.Pointer;
// Multiple, simultaneous mouse button inputs are processed here.
// Mouse input is associated with a single pointer assigned when
// mouse input is first detected.
// Clicking additional mouse buttons (left, wheel, or right) during
// the interaction creates secondary associations between those buttons
// and the pointer through the pointer pressed event.
// The pointer released event is fired only when the last mouse button
// associated with the interaction (not necessarily the initial button)
// is released.
// Because of this exclusive association, other mouse button clicks are
// routed through the pointer move event.
if (ptr.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Mouse)
{
// To get mouse state, we need extended pointer details.
// We get the pointer info through the getCurrentPoint method
// of the event argument.
Windows.UI.Input.PointerPoint ptrPt = e.GetCurrentPoint(Target);
if (ptrPt.Properties.IsLeftButtonPressed)
{
eventLog.Text += "\nLeft button: " + ptrPt.PointerId;
}
if (ptrPt.Properties.IsMiddleButtonPressed)
{
eventLog.Text += "\nWheel button: " + ptrPt.PointerId;
}
if (ptrPt.Properties.IsRightButtonPressed)
{
eventLog.Text += "\nRight button: " + ptrPt.PointerId;
}
}
// Prevent most handlers along the event route from handling the same event again.
e.Handled = true;
// Display pointer details.
updateInfoPop(e);
}
private void Target_PointerMoved(object sender, PointerRoutedEventArgs e)
{
Windows.UI.Xaml.Input.Pointer ptr = e.Pointer;
// Multiple, simultaneous mouse button inputs are processed here.
// Mouse input is associated with a single pointer assigned when
// mouse input is first detected.
// Clicking additional mouse buttons (left, wheel, or right) during
// the interaction creates secondary associations between those buttons
// and the pointer through the pointer pressed event.
// The pointer released event is fired only when the last mouse button
// associated with the interaction (not necessarily the initial button)
// is released.
// Because of this exclusive association, other mouse button clicks are
// routed through the pointer move event.
if (ptr.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Mouse)
{
// To get mouse state, we need extended pointer details.
// We get the pointer info through the getCurrentPoint method
// of the event argument.
Windows.UI.Input.PointerPoint ptrPt = e.GetCurrentPoint(Target);
if (ptrPt.Properties.IsLeftButtonPressed)
{
eventLog.Text += "\nLeft button: " + ptrPt.PointerId;
}
if (ptrPt.Properties.IsMiddleButtonPressed)
{
eventLog.Text += "\nWheel button: " + ptrPt.PointerId;
}
if (ptrPt.Properties.IsRightButtonPressed)
{
eventLog.Text += "\nRight button: " + ptrPt.PointerId;
}
}
// Prevent most handlers along the event route from handling the same event again.
e.Handled = true;
// Display pointer details.
updateInfoPop(e);
}
Los eventos de puntero de un dispositivo de entrada del mouse suelen tener el mismo PointerId en los detalles del evento durante la vigencia de la aplicación.
PointerPressed 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.
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.
PointerPressed admite la capacidad de adjuntar controladores de eventos a la ruta que se invocará 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 PointerPressed. Si es así, el control probablemente tiene una invalidación para el método OnPointerPressed. Normalmente, el evento está marcado como controlado por el controlador de clase y el evento PointerPressed no se genera para controlarlo ningún controlador de código de usuario en ese control. Por ejemplo, ButtonBase tiene control de clases que controla PointerPressed y, en su lugar, activa Click. 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.
Los controles también pueden tener una animación de personalidad PointerDownThemeAnimation que se ejecuta independientemente del evento.
Captura de puntero
PointerPressed se usa a veces como evento de inicio al capturar el puntero, por lo que todos los eventos relacionados con el puntero se capturan por un elemento determinado siempre y cuando el puntero permanezca inactivo. Para capturar un puntero, llame al método CapturePointer en un elemento de interfaz de usuario específico que debe mantener la captura. Esto suele hacerse dentro de un controlador de eventos PointerPressed y se llama a CapturePointer en el remitente del evento. Para obtener más información sobre cómo capturar un puntero y por qué es posible que quiera hacerlo, vea CapturePointer.
Eventos pointerPressed y gesto, o eventos de manipulación
La acción del usuario que desencadena un evento PointerPressed inicialmente puede dar lugar inicialmente al evento Holding que representa un gesto de suspensión , a menos que el dispositivo de entrada sea un mouse. Si el elemento en el que se produce PointerPressed tiene un valor ManipulationMode no predeterminado, la acción también podría dar lugar a varios eventos de manipulación como ManipulationStarted. Para obtener más información, consulta la sección "Uso de eventos de manipulación" en Controlar la entrada del puntero.
Cuando se activa PointerPressed, los eventos de gestos como Tapped aún no se activarán porque los eventos de gesto distintos de Holding esperan a que el puntero se libere antes de desencadenar un evento.
Como regla de diseño general para las interacciones de usuario de la aplicación, debes examinar si hay eventos específicos del control que puedes controlar para una interacción o eventos de gestos adecuados. Por ejemplo, si el control es un botón, ese control tiene un evento Click que está diseñado específicamente para cuando el usuario invoca la acción del botón. O bien, si el elemento no es un botón, pero está controlando y evento para la acción principal de un elemento, controlaría Tapped.
Los eventos de gestos se pueden deshabilitar específicamente en elementos individuales estableciendo propiedades como IsTapEnabled. Es posible que deshabilite los eventos de gestos si está procesando manipulaciones, pero normalmente no es necesario deshabilitar los eventos de gestos si controla los eventos de puntero. Los eventos de puntero no se pueden deshabilitar específicamente, pero puede optar por no controlarlos.
PointerPressed y PointerReleased
Otros eventos en lugar de PointerReleased pueden desencadenarse al final de la acción( por ejemplo, PointerCanceled o PointerCaptureLost. No se base en los eventos PointerPressed y PointerReleased que siempre se producen en pares. Para funcionar correctamente, la aplicación debe escuchar y controlar todos los eventos que representan las conclusiones probables de la acción Presionar . Algunas de las razones por las que es posible que no obtenga una repetición PointerReleased son:
- Diferencias en el modo en que el hardware específico controla las acciones táctiles y las acciones de prensa
- Captura de puntero mediante programación desde un puntero diferente
- Acciones del usuario que cambian la relación del área de presentación, como cambiar la resolución o la configuración del monitor
- Interacciones de entrada como un lápiz óptico tocando la misma superficie que una acción táctil anterior