2010-12-01 11 views
5

Conecté un controlador de eventos al evento KeyDown de un TextBox. El controlador de eventos tiene un argumento de tipo KeyEventArgs con propiedades Key y PlatformKeyCode. El problema es tanto para el y ! teclas presionadas en el teclado del teléfono con Windows, los valores para Key y PlatformKeyCode son D1 y 49 respectivamente. No puedo decir qué tecla fue presionada. También la propiedad estática Keyboard.Modifiers devuelve "Ninguna"Cómo determinar el valor de la tecla presionada en Windows Phone 7 Teclado numérico?

Entonces, ¿cómo determino la tecla que se presionó?

+0

Pensé que esto sería fácil, pero acabo de probar esto en mi dispositivo, y obtengo los mismos resultados. También noté que las teclas ';' y ':' tienen el mismo PlatformKeyCode de 186 y 'Key == Key.Unknown'. Extraño. – driis

+0

@driis Gracias por probar y confirmar mis sospechas. – rams

Respuesta

2

Se trata de un problema conocido.

KeyDown/OnKeyDown and KeyUp/OnKeyUp issues

Siempre se puede leer los valores de entrada en lugar y actuar sobre 1 /! por separado.

+0

gracias por el enlace. Esperemos que el problema se resuelva pronto – rams

+0

De acuerdo, no dude en publicarlo en connect y/o en el foro de sugerencias oficial. –

1

Esto parece un error.

Esto existe tanto en el emulador como en dispositivos reales.

Si utiliza el teclado de la PC con el emulador, las teclas modificadoras se detectan al pulsar la tecla, por lo que no funcionará.

Curiosamente, si utiliza un dispositivo con un teclado físico, si el botón de función/cambio está habilitado, desencadena 2 eventos de tecla cuando se presiona el otro botón. Uno para el código clave correcto y otro para la tecla modificadora, pero Keboard.Modifier siempre es igual a "Ninguno".

Parece que necesita leer el valor del cuadro de texto antes y después del evento TextChanged.

+0

gracias por los experimentos y sugerencias. Estoy trabajando con el evento TextChanged ahora para superar la limitación – rams