我有这个:
<Canvas x:Name="LayoutRoot" KeyDown="LayoutRoot_KeyDown">
</Canvas>
在VS2008中新推出的Ag 3应用程序中。我只是将默认的<Grid />
更改为<Canvas />
,并添加了一个弹出MessageBox的KeyDown
处理程序。
但无论我如何尝试,KeyDown
事件都永远不会发生。
只是<Canvas />
不支持KeyDown
或我做错了吗?
答案 0 :(得分:4)
你需要在Canvas中至少有一些可以获得焦点的东西,你会发现事件会冒出来。
您可能还想在画布上设置IsHitTestVisible="True"
。
答案 1 :(得分:3)
由于您的Canvas
是“LayoutRoot”,因此您可以使用包含UserControl
的内容。
将属性IsTabStop="true"
放在UserControl
上。在Loaded
事件调用中this.Focus()
。将KeyDown处理程序附加到UserControl
而不是Canvas
。
只要插件本身具有焦点(您可以通过一点Javascript确保),您现在应该获得关键事件。