2011-05-11 20 views
12

Estoy trabajando en la aplicación de pantalla táctil que se ejecuta en Windows XP Standard. Con el hardware actual para invocar un clic derecho, el usuario tiene que hacer clic y mantener pulsado durante unos segundos, pero esto podría interferir con otras acciones, como mantener presionado un botón de repetición en el scrollviewer, por lo que he decidido desactivar el clic derecho.Desactivar un clic derecho (mantener presionado) en la aplicación WPF.

Preferiría deshabilitar un clic derecho en el nivel de la aplicación, pero si no es posible, desactivar el clic derecho en el nivel de Windows también me funcionaría.

Respuesta

7

Puede anular OnPreviewMouseRightButtonDown en la ventana y establecer Handled en true. También necesita manejar OnPreviewMouseRightButtonUp (gracias a Vitalij por señalar esto)

Eso debería hacer el truco.

+0

¿Quiere añadir OnPreviewMouseRightButtonDownto los elementos de la interfaz de usuario? – Vitalij

+0

Si maneja OnPreviewMouseRightButtonDown en la ventana, lo manejará antes que nadie ... no necesita seguir manipulándolo para cada control –

+0

¡Correcto! Olvidé que esa ventana se deriva de UIElement, por lo tanto, tiene todos los eventos del mouse. Lo único es que debe marcar OnPreviewMouseRightButtonDown y OnPreviewMouseRightButtonUp como se manejan. – Vitalij

21

El enfoque OnPreviewMouseRightButtonDown/Up no funcionó para mí.

  1. Existe una propiedad Stylus.IsPressAndHoldEnabled en UIElement sin embargo. Ponlo en falso para deshacerte de la prensa y mantén presionado el botón derecho. Probé esto en Windows 7 con .NET 4.0, pero la propiedad está disponible desde .NET 3.0.

    < RepeatButton Stylus.IsPressAndHoldEnabled = "false" .../>

  2. También hay una entrada de blog here que proporciona un ejemplo de código para una desactivación similar de prensa y mantenga a nivel de la ventana. Pero con esto en su lugar, los eventos PreviewTouchDown y TouchDown no se levantarán tan pronto como el dedo toque la pantalla (lo cual sería necesario para un RepeatButton, supongo), solo después. Lea las 'Observaciones' en this msdn page.

+1

Confirmo que la solución Stylus.IsPressAndHoldEnabled también funciona en Windows 8 :-) ¡gracias! –

+2

Sé que es anterior, pero también confirmo que la solución Stylus.IsPressAndHoldEnabled funciona para Windows 10. – WBuck

+0

Gracias. Necesitaba usar esto para poder eliminar el "rectángulo de presionar y mantener el efecto". Siendo nuevo en el uso de una pantalla táctil con WPF, fue difícil encontrar la respuesta. – horseman1210

Cuestiones relacionadas