У меня есть UserControl, который находится в ElementHost
.
Он содержит DataGrid
Когда пользователь нажимает клавишу ввода или дважды щелкает строку, отображается новое окно (без модального окна), и когда это окно закрывается, окно с ElementHost активируется обратно. Проблема в том, что DataGrid теряет фокус.
Snoop показал мне, что визуальное дерево имеет следующую структуру:
AdornerDecorator -> AvalonAdapter -> My UserControl.
Snoop показывает, что после активации AdornerDecorator имеет свойства
IsFocusable = false
IsFocused = false
IsKeyboardFocused = true
IsKeyboardFocusWithin = true
Что для меня абсолютная чушь.
Когда пользователь нажимает Tab или клавиши со стрелками, фокус получает первый активированный элемент UserControl.
Я прочитал этот пост, и я м не доволен:
Focus работает по-разному для WPF и Windows Forms, и здесь были некоторые неровности, которые мы не смогли исправить. Если у вас есть фокус внутри WindowsFormsHost и вы либо минимизируете / восстанавливаете форму, либо показываете модальное диалоговое окно, фокус внутри WindowsFormsHost может быть потерян - WindowsFormsHost все еще имеет фокус, но элемент управления внутри него может не быть.
Что теперь? Расслабиться и быть счастливым?
И очень огорчает невозможность воспроизвести проблему в других приложениях.
Кто-нибудь может объяснить, в чем причины такого странного поведения? Может быть предложено какое-то обходное решение.