Почему FocusManager.GetFocusedElement (this) всегда возвращает ноль? - PullRequest
4 голосов
/ 23 марта 2011

У меня есть приложение, которое отлично работает как простое приложение WPF, имеющее обработчик событий в GotFocus на уровне главного окна, например:

    private void MainWindowGotFocus(object sender, RoutedEventArgs e)
    {
        var element = FocusManager.GetFocusedElement(this) as FrameworkElement;
        if (element != null)
        {
               //...

Однако это ведет себя странно, когда установлено как приложение XBAPточно такой же код - основным визуальным элементом является страница, а не окно, но событие все еще доступно и инициировано).

В этом случае (приложение-браузер XBAP / wpf) элемент всегда равен нулю.*Есть идеи?(

Ответы [ 2 ]

6 голосов
/ 23 марта 2011

Что ж, благодаря моему коллеге (Богдан Р.) мы обнаружили, что FocusManager.IsFocusScope имеет разные значения по умолчанию для Window (WPF) и Page (XBAP), а именно для последнего - false.

Простая установка FocusManager.IsFocusScope в элементе Page решает проблему.

3 голосов
/ 04 августа 2013

также может попытаться использовать Keyboard.FocusedElement вместо

...