Ответ 1
Я нашел какое-то объяснение в этот вопрос форума WPF:
Поскольку некоторые IME будут обрабатывать пробельные нажатия клавиш как часть процесса составления текста, то почему он ловит Avalon для сообщения правильного композитного текста через событие TextInput.
И еще несколько сведений из Документация MSDN события TextInput:
... Для ввода с клавиатуры WPF сначала отправляет соответствующие события KeyDown/KeyUp. Если эти события не обрабатываются, а ключ является текстовым (а не управляющим ключом, например направленными стрелками или функциональными клавишами), то возникает событие TextInput. Между событиями KeyDown/KeyUp и TextInput не всегда есть простое взаимно однозначное сопоставление, поскольку несколько нажатий клавиш могут генерировать один символ ввода текста, а одиночные нажатия клавиш могут генерировать многосимвольные строки. Это особенно актуально для таких языков, как китайский, японский и корейский языки, которые используют Редакторы методов ввода (IME) для генерации тысяч возможных символов в соответствующих алфавитах.
Когда WPF отправляет событие KeyUp/KeyDown, Key устанавливается в Key.System, если нажатия клавиш могут стать частью события TextInput (например, если нажата клавиша ALT + S). Это позволяет использовать код в обработчике событий KeyDown для проверки Key.System и, если найден, оставить обработку для обработчика впоследствии поднятого события TextInput. В этих случаях различные свойства аргумента TextCompositionEventArgs могут использоваться для определения исходных нажатий клавиш. Аналогично, если IME активен, Key имеет значение Key.ImeProcessed, а ImeProcessedKey дает исходное нажатие клавиши или нажатия клавиш.
Кстати, вот два связанных вопроса: