2010-04-07 73 views
4

我有这样的:Silverlight Canvas不支持KeyDown?

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

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

但是不管我怎么试,KeyDown事件都不会发生。

仅仅是<Canvas />不支持KeyDown还是我做错了什么?

回答

4

您需要在Canvas中至少有一些可以获得焦点的东西,并且您会发现该事件会冒泡。

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

3

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

将地产IsTabStop="true"置于UserControl。在Loaded事件中调用this.Focus()。将您的KeyDown处理程序附加到UserControl而不是Canvas

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