Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Silverlight应用程序中检测键盘焦点丢失_Silverlight_Focus - Fatal编程技术网

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

在Silverlight应用程序中检测键盘焦点丢失,silverlight,focus,Silverlight,Focus,我有一个由键盘控制的Silverlight游戏,我希望它在失去键盘焦点时进入暂停状态(例如,用户单击托管网页的另一部分,或移动到另一个浏览器选项卡) 我曾经在Silverlight 1.1中通过订阅我的RootVisual UserControl上的LostFocus事件来实现这一点,但在Silverlight的最后两个版本中,我发现在单击应用程序中的按钮后不久,此事件似乎意外触发(在Silverlight 2中触发一次,在Silverlight 3中触发两次!) 在托管页面或Silverlig

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

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


在托管页面或Silverlight中是否有更可靠的javascript方法来检测焦点丢失?

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

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

你确定这样行吗?根据我的经验,当一个孩子有焦点并且焦点转移到父母和孩子之外时,你永远不会得到OriginalSource==parent的LostFocus。我懒得听失焦。我在GotFocus中做每件事。我想可能有一些场景不可靠,但对于我的游戏来说,它工作得很好。这是Silverlight的一个很好的更新,您可以在应用程序级别订阅一个全局事件。