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

questionAnswers(2)

yourAnswerToTheQuestion