Silverlight Canvas不支持KeyDown?

时间:2010-04-07 21:41:31

标签: silverlight events silverlight-3.0

我有这个:

<Canvas x:Name="LayoutRoot" KeyDown="LayoutRoot_KeyDown">
</Canvas>

在VS2008中新推出的Ag 3应用程序中。我只是将默认的<Grid />更改为<Canvas />,并添加了一个弹出MessageBox的KeyDown处理程序。

但无论我如何尝试,KeyDown事件都永远不会发生。

只是<Canvas />不支持KeyDown或我做错了吗?

2 个答案:

答案 0 :(得分:4)

你需要在Canvas中至少有一些可以获得焦点的东西,你会发现事件会冒出来。

您可能还想在画布上设置IsHitTestVisible="True"

答案 1 :(得分:3)

由于您的Canvas是“LayoutRoot”,因此您可以使用包含UserControl的内容。

将属性IsTabStop="true"放在UserControl上。在Loaded事件调用中this.Focus()。将KeyDown处理程序附加到UserControl而不是Canvas

只要插件本身具有焦点(您可以通过一点Javascript确保),您现在应该获得关键事件。