IsKeyboardFocused всегда ложно внутри OnRender () - PullRequest
0 голосов
/ 01 марта 2012

Я пытаюсь создать свой собственный текстовый редактор для своей программы, который пока что выделяет синтаксис.Он даже не может редактировать текст.

Я столкнулся с проблемой при попытке отобразить мою карету.

В моем методе OnRender() я использую IsKeyboardFocused, чтобы проверить,У меня есть клавиатурный фокус, который, если я делаю, то он идет вперед и рисует мой курсор.

Я велел клавиатуре через Keyboard.Focus(MyCustomTextEditor) сосредоточиться на своем контроле, когда я щелкаю по нему мышью, и когдаЯ перехватываю его с помощью обработчика событий GotKeyboardFocus, я могу проверить с помощью сообщений отладки, что фокус прошел успешно.

Однако, что бы я ни делал, я не могу сделать IsKeyboardFocused = True внутри OnRender().Я поместил Debug.Print() в начало, конец, середину и все остальные места, которые можно себе представить, внутри OnRender(), а результаты всегда были ложными.

Мой метод кажется довольно простым.Я просто не понимаю, что я мог бы пропустить.Спасибо за ваше время, читая это!

1 Ответ

0 голосов
/ 01 марта 2012

Вы пытались использовать FocusManager.FocusedElement, чтобы выяснить, на какой элемент фокусируется, когда вы ожидаете, что ваш контроль будет иметь фокус? Это должно дать несколько подсказок.

Выстрел в темноте, OnRender() вызывается снова после контрольной нагрузки или вы проверяете только init? Я вспоминаю проблемы с фокусировкой, связанные с настройкой фокуса на элементе управления во время события Loaded, но после этого фокус может быть восстановлен.

...