Обнаружение потери фокуса клавиатуры в приложении Silverlight - PullRequest
2 голосов
/ 14 сентября 2009

У меня есть игра Silverlight, управляемая клавиатурой, и я хочу, чтобы она перестала работать, когда теряет фокус клавиатуры (например, пользователь нажимает на другую часть веб-страницы хостинга или переходит на другую вкладку браузера).

Раньше я делал это в Silverlight 1.1, подписываясь на событие LostFocus на моем RootVisual UserControl, но в двух последних версиях Silverlight я обнаружил, что это событие неожиданно срабатывает вскоре после нажатия кнопки в моем приложении (в Silverlight 2 срабатывает один раз, в Silverlight 3 дважды!).

Есть ли способ в javascript на странице хостинга или в Silverlight более надежно обнаружить потерю фокуса?

1 Ответ

2 голосов
/ 14 сентября 2009

Я наконец нашел решение этой проблемы. Свойство RoutedEventArgs в событии LostFocus имеет свойство OriginalSource, которое позволяет мне игнорировать любые события LostFocus, которые происходят от потомков RootVisual.

    void Page_LostFocus(object sender, RoutedEventArgs e)
    {
        if (e.OriginalSource == this)
        {
            Pause();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...