захват события клавиатуры swype Windows phone 8.1
Update [16-Jul-2014]: вопрос технически некорректен. Читать ответ, чтобы получить более подробную информацию.
Я пытался захватить текст, прежде чем добраться до моего текстового поля. и я обнаружил следующие факты:--11-->
KeyDown,KeyUpсобытие скажет вам, что не характер !!CoreWindow.CharacterReceivedзахватит характер, но это
событие не относится к TextBox и он скажет вам характер
после того, как он достиг текстового поля.
теперь мой вопрос:
может ли кто-нибудь сказать мне, как я могу захватить событие клавиатуры Swype на windows phone 8.1?

обратите внимание, что :
1-я попытался захватить его в текстовом поле.Вставить, но это не удается : (
2 - событие textBox.textChanged() это не то, что я ищу, потому что это событие после того, как клавиатура сделана, и это событие (textChanged) будет стрелять после keyDown, keyUp, CharacterReceived независимо от того, как текст был введен.
1 ответов
ОК! Я был в этом вопросе в течение нескольких дней и тщательно протестировал его, чтобы понять, и пришел к следующим выводам:
1 - ввод с клавиатуры обрабатывается событием страницы с именем (CharacterRecieved). событие запускается и захватывается страницей, а затем отправляется в TextBox и приведет к стрельбе TextChanged событие.
2-Если вы приходите в winRT и Windows phone с менталитетом winForms, у вас наверняка будет путаница, которую я имел, и возьму некоторое время, чтобы понять это [если вы не прочитаете этот ответ, который сделает его короче].
3-Не ожидайте [ как я ложно ожидал ], что событие введенного символа будет срабатывать в текстовом поле. Он будет срабатывать на странице (CoreWindow), а затем изменяет текстовое значение текстового поля, поэтому вы должны поймать событие на уровне страницы, а не на уровне управления.
4 - разница между вводом одной буквы с помощью клавиатуры и вводом одного слова с помощью клавиатуры swype:
**
- в случае одной буквы, введенной клавиатурой на телефоне, следующая последовательность будет в эти выходные. скорее всего произошло:
**
предположим textBox.Text = "99";
теперь я нажму цифру 7:
1- KeyDown событие будет стрелять: здесь вы можете захватить virtualKey но вы не сможете узнать характер, поэтому нажатие " a "буква, которую вы не можете знать, это" a "capital или "a" маленький.
еще textBox.Text = "99";
2- CharacterRecieved пожар; textBox.Text = "997";
3- KeyUp противопожарные мероприятия; textBox.Text = "997";
4- textChanged пожар.; textBox.Text = "997";
- в то время как в случае swype-keyboard:
предположим textBox.Text = "99";
и я хочу ввести текст "Hello";
swype добавит пробел перед словом, так что это будет "Привет"
и последовательность событий выглядит следующим образом:
1 - цикл для каждого символа в строка "hello" запустит событие CharacterRecieved и textBox.Text значение будет textBox.Text= "99 " на первой итерации; затем со второй итерации textBox.Text = "99 hello";
в каждой итерации вы можете захватить key code [char] что в этом случае (32, 110, 101, 108,108, 111). обратите внимание, что к настоящему времени textBox.Text значение изменяется, однако еще не отображается на экране !!
2-The textChanged событие выстрелит дважды (странно !! я думаю, один на пробел и второе слово "здравствуйте"), кроме того, сейчас the textBox.Text = "99 hello" но все еще не отображается на экране до конца двух итераций над событием textChanged.
С этим мы замечаем разницу между swype и обычными событиями клавиш клавиатуры, которая заключается в том, что в swype нет keyDown keyUp события вообще !!
теперь, если вы знаете сценарии с каждым методом ввода клавиатуры (swype/non-swype), вы можете планировать свою проверку и поведение приложения, как вы хотите. при условии, что вы знаете это полностью отличается от устаревшего системного ввода windows.
я надеюсь, что это поможет кому-то там и спасти его / ее много часов путаницы и агонии:)