代码之家  ›  专栏  ›  技术社区  ›  Mark Heath

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

  •  2
  • Mark Heath  · 技术社区  · 15 年前

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

    我以前在Silverlight 1.1中通过订阅rootVisual用户控件上的LostFocus事件来执行此操作,但在Silverlight的最后两个版本中,我发现单击应用程序中的某个按钮后不久,此事件似乎会意外触发(在Silverlight 2中,它触发一次,在Silverlight 3中触发两次!).

    在宿主页面上或在Silverlight中是否有一种更可靠地检测焦点丢失的方法?

    1 回复  |  直到 15 年前
        1
  •  2
  •   Mark Heath    15 年前

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

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