У нас есть приложение WPF, в котором нам нужно определить, печатает ли пользователь что-то, что может появиться в текстовом поле. У WinForms раньше было хорошее переопределение OnKeyPressed, которое отличалось от OnKeyDown тем, что оно вызывалось только тогда, когда печатался печатный символ (например, оно различалось между «A» и «a», но не между «1» в верхней строке и цифровая клавиатура. Также игнорируются такие клавиши, как «Shift» и т. д.) Нам нужно продублировать эту функцию в WPF.
Теперь я знаю, что могу переопределить OnKeyDown и проверить код ключа, но это означает, что нужно вручную проверять каждый возможный ключ, который может привести к появлению чего-либо в текстовом поле. Похоже, это консенсус по другим подобным SO-вопросам, которые я нашел, но я просто не могу поверить, что что-то настолько простое было бы исключено из API.
Помимо «монстра if-дерева», одним из «хакерских» решений является использование текстового поля в памяти, передача ему кода ключа, а затем проверка длины текста. Но меня тошнит, даже печатая это как возможное решение! UGH !! Я чувствую себя грязным!
ТАК ... как проще всего узнать, нажал ли пользователь клавишу или клавиши, которые приведут к печатному символу?
ТИА
Mark