Windows Phone 8.1 текстовое поле символов VirtualKey проверки

я делаюопинг Windows Phone 8.1 приложение. В текстовом поле я хочу запретить пользователю вводить только любые нецифровые буквы [0-9].

Итак, вот мой код:

 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);

        }

это работает, но есть два основных недостатка:

1- он также принимает сдвинутые символы (т. Е. @ # $% ^ & *), Пока это не требуется.

2 - когда я запускаю приложение, текстовое поле заполняется номером. Я могу ввести любое число или символы (! @ # $% ^), Также я могу удалить, используяBACKSPACE, в течение этого времениShiftState являетсяNONE, Однако, как только я удаляю все содержимое в текстовом поле, используяBACKSPACE ShiftState изменения в [locked | Down ] и я не могу ничего ввести в это текстовое поле.

обратите внимание, что я никогда не касаюсь кнопки переключения передач!

где я тут не прав ??

ОБНОВИТЬ

Я обнаружил, что при использовании функции смахивания вводятся текстовые буквы без запуска события keyDown, которое я применял :(

любая помощь приветствуется

Ответы на вопрос(2)

Ваш ответ на вопрос