Я обрабатываю событие PreviewTextInput в своем окне для обработки проверок с устройства чтения магнитных карт. Я обрабатываю событие в окне, так что не имеет значения, какой именно элемент управления сосредоточен.
Как только обработчик определит, что салфетка запущена (вводится символ "%" или ";" ), он обрабатывает все события, пока салфетка не будет завершена. Эта система, как правило, работает довольно хорошо, с несколькими важными исключениями:
Когда символ пробела (и, возможно, символ \n) вводится из считывателя, они не обрабатываются PreviewTextInput, а отправляются непосредственно в любой элемент управления. Как ни странно, обработчик получает символы \r. Это вызывает нежелательное поведение.
Я хочу, чтобы захватить все ключевые события на уровне окна и иметь возможность обрабатывать их, если захочу. Я попробовал PreviewKeyDown и нашел его немного громоздким в использовании и получить значения char. PreviewTextInput гораздо приятнее, потому что я могу просто прочитать свойство Text.
Есть ли причина, по которой PreviewTextInput не обрабатывает определенные символы? Есть ли сопоставимый метод для получения всех событий, включая пробелы?