Windows Phone 8.1 Textfeld Zeichen VirtualKey Validierung

Ich entwickle Windows Phone 8.1 App. In einem Textfeld möchte ich verhindern, dass der Benutzer nur nicht digitale Buchstaben [0-9] eingibt.

Also hier ist mein Code:

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

        }

es funktioniert, aber es gibt zwei Hauptmängel:

1- es akzeptiert auch die verschobenen Zeichen (d. H. @ # $% ^ & *), Solange dies nicht gewünscht ist.

2- Wenn ich die App starte, wird das Textfeld mit einer Nummer gefüllt. Ich kann eine beliebige Zahl oder ein beliebiges Zeichen (! @ # $% ^) Eingeben und mit der löschenBACKSPACE. während dieser Zeit dieShiftState istNONE. Sobald ich jedoch alle Inhalte in der Textbox mit der löscheBACKSPACE dasShiftState ändert sich zu [locked | Down ] und ich kann in dieses Textfeld nichts mehr eingeben.

bemerke, dass ich niemals die Shift-Taste berühre!

wo irre ich mich hier ??

AKTUALISIEREN

Ich habe festgestellt, dass die Verwendung der Wischfunktion Textbuchstaben eingibt, ohne das von mir angewendete keyDown-Ereignis auszulösen :(

Jede Hilfe wird gebeten

Antworten auf die Frage(2)

Ihre Antwort auf die Frage