Windows phone 8.1 personagem de caixa de texto validação virtualKey
Estou desenvolvendo o Windows Phone 8.1 app. Em uma caixa de texto, desejo impedir o usuário de inserir apenas letras não digitais [0-9].
Então, aqui está o meu 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, mas existem duas falhas principais:
1- ele também aceita os caracteres deslocados (ou seja, @ @ $ $ ^ ^ *) enquanto isso não é desejado.
2- Quando inicio o aplicativo, a caixa de texto é preenchida com um número. Posso inserir qualquer número ou caractere (! @ # $% ^), Também posso excluir usando oBACKSPACE
. durante esse tempo oShiftState
éNONE
. No entanto, uma vez excluído todo o conteúdo da caixa de texto usando oBACKSPACE
aShiftState
muda para [locked | Down
] e eu não consigo inserir nada nessa caixa de texto.
repare que nunca toco no botão shift!
onde estou errado aqui ??
ATUALIZAR
Descobri que o uso do recurso furto inserirá letras de textos sem disparar o evento keyDown que eu estava aplicando :(
qualquer ajuda é apreciada