在OnRender()中,IsKeyboardFocused始终为False

时间:2012-02-29 23:17:17

标签: wpf wpf-controls

我正在尝试为我的程序创建自己的自定义文本编辑器,到目前为止,语法高亮显示。它甚至无法编辑文本。

我试图展示我的插入符号时遇到了麻烦。

在我的OnRender()方法中,我使用IsKeyboardFocused来检查我是否有键盘焦点,如果我这样做,那么它会继续并绘制光标。

当我用鼠标点击它时,我通过Keyboard.Focus(MyCustomTextEditor)告诉键盘专注于我的控制,当我使用GotKeyboardFocus事件处理程序拦截它时,我可以使用调试消息来验证重点成功通过。

然而,无论我做什么,我似乎都无法在IsKeyboardFocused = TrueOnRender()。我将Debug.Print()放在OnRender()内的开头,结尾,中间和其他可以想象的地方,结果总是为假。

我的方法看起来非常简单。我只是不明白我可以遗漏什么。感谢您抽出宝贵时间阅读本文!

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用FocusManager.FocusedElement来确定当您希望控件具有焦点时所关注的元素?这应该提供一些线索。

在黑暗中拍摄,在控制加载后再次调用OnRender(),还是只检查init?我记得焦点问题涉及在Loaded事件期间将焦点设置在控件上,之后才会恢复焦点。