我有 UserControl,它在ElementHost
.
它包含DataGrid
当用户按下回车键或双击行时显示新窗口(无模式),并且当该窗口关闭时,带有 ElementHost 的窗口将重新激活。问题是 DataGrid 失去焦点。
Snoop 向我展示了可视化树具有以下结构:
AdornerDecorator -> AvalonAdapter -> 我的用户控件。
Snoop 显示激活后 AdornerDecorator 有属性
IsFocusable = false
IsFocused = false
IsKeyboardFocused = true
IsKeyboardFocusWithin = true
什么对我来说绝对是胡说八道。
当用户点击 Tab 或箭头键时,第一个启用的 UserControl 元素获得焦点。
我读过这篇文章,但我对此并不满意:
对于 WPF 和 Windows 窗体,Focus 的工作方式不同,这里有一些我们无法修复的粗糙边缘。如果您在 WindowsFormsHost 中具有焦点并且最小化/恢复表单或显示模式对话框,则 WindowsFormsHost 中的焦点可能会丢失 - WindowsFormsHost 仍然具有焦点,但其中的控件可能没有。
怎么办?放松和快乐?
非常令人失望的是无法在其他应用程序中重现该问题。
谁能解释这种奇怪行为的原因是什么?可能会提供一些解决方法。