检测Silverlight应用程序中键盘焦点的丢失

时间:2009-09-14 12:22:33

标签: silverlight focus

我有一个由键盘控制的Silverlight游戏,我希望它在失去键盘焦点时进入暂停状态(例如,用户点击主机网页的另一部分,或移动到另一个浏览器选项卡)。

我曾经在Silverlight 1.1中通过订阅我的RootVisual UserControl上的LostFocus事件来做到这一点,但在Silverlight的最后两个版本中,我发现在我的应用程序中单击一个按钮后,此事件似乎意外触发(在Silverlight 2它曾经在Silverlight 3中发射过两次!)。

主机页面或者Silverlight中的javascript是否有办法更可靠地检测失去焦点?

1 个答案:

答案 0 :(得分:2)

我终于找到了解决这个问题的方法。 LostFocus事件上的RoutedEventArgs属性具有OriginalSource属性,该属性允许我忽略来自RootVisual的子项的任何LostFocus事件。

    void Page_LostFocus(object sender, RoutedEventArgs e)
    {
        if (e.OriginalSource == this)
        {
            Pause();
        }
    }