2010-04-07 6 views
4

J'ai ceci:Silverlight Canvas ne prend pas en charge KeyDown?

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

Dans une application Ag 3 nouvellement monnayé dans VS2008. J'ai simplement changé la valeur par défaut <Grid /> en <Canvas /> et ajouté un gestionnaire KeyDown qui affiche un MessageBox. Mais peu importe comment j'ai essayé, l'événement KeyDown ne se déclencherait jamais.

Est-ce simplement que <Canvas /> ne supporte pas KeyDown ou est-ce que je fais quelque chose de mal?

Répondre

4

Vous devez avoir au moins quelque chose à l'intérieur du Canevas qui peut recevoir le focus, et vous constaterez que l'événement va augmenter. Vous pouvez également définir IsHitTestVisible="True" sur le canevas.

3

Depuis votre Canvas est le "LayoutRoot" vous pouvez utiliser le UserControl contenant à la place.

Placez la propriété IsTabStop="true" sur le UserControl. Dans l'événement Loaded, appelez this.Focus(). Attachez votre gestionnaire KeyDown au UserControl au lieu du Canvas.

Tant que le plugin lui-même a le focus (que vous pouvez assurer avec un peu de Javascript), vous devriez maintenant obtenir des événements clés.

Questions connexes