如何捕获Silverlight应用程序中的击键?

时间:2009-06-05 00:14:34

标签: silverlight keydown event-handling

我正在尝试捕获Silverlight 2应用程序中发生的任何击键。没有任何输入字段,我正在编写游戏,并且需要知道正在按下哪个箭头键。我最好的猜测如何通过事件处理程序捕获这些是不成功的。有什么建议吗?

4 个答案:

答案 0 :(得分:1)

很高兴再次见到你(虚拟地)。

我假设你已经尝试在根UserControl元素上连接KeyDown。以下是一些提示:

  • 插件在看到关键事件之前需要关注。您必须强制用户单击插件才能启动。

  • 确保您没有吃箭头键事件的其他元素(如ScrollViewer)。如果您有ScrollViewer,您将只看到KeyUp。

  • 无法切换到全屏模式。

必须是那种简单的东西,你就是这样。希望有所帮助。

答案 1 :(得分:0)

处理根网格上的KeyDown和/或KeyUp事件。

答案 2 :(得分:0)

Silverlight 2支持KeyUp和KeyDown事件(仅我相信 - 不是KeyPress)。

在这些事件中,您将获得KeyEventArgs对象作为参数。您可以从中获取KeyCode或KeyData。

答案 3 :(得分:0)

在回顾来自不同论坛的一些不同主题时,最好处理页面(根)元素上的键事件,解析所需效果的键,并将命令重定向到特定控件。

this.KeyDown += (s, e) =>
   {
       MyControl control = (MyControl)Layoutroot.FindName("controlname");
       if(control != null)
       {
           control.MyPublicFunction(e.Key);
       }
   };

MyControl

public MyPublicFunciton(Key pressedKey)
{
    if(pressedKey == Key.Enter)
    {
        //Do something
    }
}