Re[4]: WPF/WInForms Проблемы в фокусом
От: sonnesuchtige  
Дата: 09.01.09 04:36
Оценка:
Майкрософты клянуться шо все должно работать, но закрался злой баг. Решение типа такое:


    public class WindowsFormsHost2 : WindowsFormsHost
    {
        // когда ВПФ вызывает этот метод для отработки навигационной команды надо кучками установить хосту физический фокус иначе не работает следующий метод
        public override bool TabInto(TraversalRequest request)
        {
            Keyboard.Focus(this);
            return base.TabInto(request);
        }

        // когда ВПФ пытается установить свой фокус... 
        protected override void OnPreviewGotKeyboardFocus(KeyboardFocusChangedEventArgs e)
        {
            // ... найти активный контрол в дереве ВинФормс и асинхронно засадить на него фокус
            ...
            base.OnPreviewGotKeyboardFocus(e);
        }
    }


На простом примере работает довольно. Но не все. Если устанавливать фокус мышкой или табом — работает, но если устанавливать фокус мнемоникой типа Альт-Ц — не работает. Так же фокус теряется при переключении на другие приложения и обратно Альт-Табом. Думаю дожму.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.