2010-04-07 87 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來確保),現在您應該可以獲得關鍵事件。