Windows phone 8.1 textbox character virtualKey validación
Estoy desarrollando Windows Phone 8.1 aplicación. En un cuadro de texto, quiero evitar que el usuario ingrese cualquier letra no digital solamente [0-9].
Entonces aquí está mi código:
private void NumKeyDown(object sender, KeyRoutedEventArgs e)
{
bool isNumber = (e.Key == Windows.System.VirtualKey.Number0 ||
e.Key == VirtualKey.Number1 ||
e.Key == VirtualKey.Number2 ||
e.Key == VirtualKey.Number3 ||
e.Key == VirtualKey.Number4 ||
e.Key == VirtualKey.Number5 ||
e.Key == VirtualKey.Number6 ||
e.Key == VirtualKey.Number7 ||
e.Key == VirtualKey.Number8 ||
e.Key == VirtualKey.Number9 ||
e.Key == VirtualKey.Back);
CoreVirtualKeyStates shiftState = Window.Current.CoreWindow.GetKeyState(VirtualKey.Shift);
bool shiftIsNotDown = true;
if ((shiftState & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down)
shiftIsNotDown = false;
e.Handled = !(isNumber && shiftIsNotDown);
}
funciona pero hay dos fallas principales:
1- también acepta los caracteres desplazados (es decir! @ # $% ^ & *) Mientras no se desee.
2- cuando inicio la aplicación, el cuadro de texto se llena con un número. Puedo ingresar cualquier número o caracteres (! @ # $% ^), También puedo eliminarlos usandoBACKSPACE
. durante este tiempo elShiftState
esNONE
. Sin embargo, una vez que elimine todo el contenido en el cuadro de texto usando elBACKSPACE
elShiftState
cambios a [locked | Down
] y no puedo ingresar nada en ese cuadro de texto.
¡Tenga en cuenta que nunca toco el botón de cambio!
¿Dónde me equivoco aquí?
ACTUALIZAR
Descubrí que el uso de la función deslizar introducirá letras de texto sin activar el evento keyDown que estaba aplicando :(
cualquier ayuda es apreciada