Невозможно различить двоеточие и точку с запятой с помощью VirtualKey

У меня есть обработчик KeyDown для TextBox в моем приложении Windows Phone 8.1 с оператором switch, основанным на нажатии клавиши.

private void TextKeyDown(object sender, KeyRoutedEventArgs e)
{
    switch (e.Key)
    {
        case (VirtualKey)186: //semicolon is typed
            {
                DoStuffHere();
            }
        //other cases...
    }
}

Я не могу отличить двоеточие от точки с запятой. Я пробовал e.Key.ToString(), но получаю только номер перечисления (186). В любом случае, чтобы выяснить, какой именно символ печатается, не глядя прямо на текст? Поскольку это событие KeyDown, я не могу посмотреть текст отсюда...


person Adi Bodas    schedule 14.06.2014    source источник
comment
Какой персонаж вы получите, зависит от состояния клавиш-модификаторов. И раскладка клавиатуры, она не одинакова для разных языков. Основная проблема заключается в том, что вы используете неправильное событие. Вместо этого используйте CharacterReceived.   -  person Hans Passant    schedule 14.06.2014
comment
Поскольку это ключевое, а не текстовое событие, все, что вы знаете, это то, какая клавиша была нажата — ; и : оба доступны нажатием одной и той же клавиши, поэтому запускайте одно и то же событие. Вам нужно найти способ проверить состояние сдвига.   -  person IMSoP    schedule 14.06.2014
comment
@HansPassant Спасибо за ссылку!!!   -  person Adi Bodas    schedule 14.06.2014