2010-10-07 19 views
1

J'essaie d'ajouter un gestionnaire d'événements KeyDown à LayoutRoot d'une vue dans un projet Silverlight SketchFlow, mais cela ne semble pas se déclencher.KeyDown non déclenché dans SketchFlow

L'événement se déclenche si je change le type d'événement en MouseLeftButton, mais je veux le démontrer en utilisant un raccourci clavier.

Est-ce que quelqu'un sait comment accomplir les deux?

Répondre

1

Eh bien, pour certaines raisons non évidentes pour les non invités, l'événement KeyDown ne s'est pas déclenché lorsqu'il a été spécifié dans XAML. J'ai trouvé que l'accrochage sur le Application.Current.RootVisual.KeyDown dans le code-behind fait l'affaire.

0

La raison en est que votre LayoutRoot est réellement et non "la" racine de mise en page lorsqu'elle est hébergée dans un lecteur SketchFlow. Le focus du clavier est initialement sur le lecteur Sketchflow. Vous pouvez essayer d'ajouter un appel Focus() dans votre événement chargé de la page, mais également vous assurer que vous avez ajouté le Jscript pour se concentrer d'abord sur l'objet Silverlight du navigateur en premier. par exemple.

<script type="text/javascript"> 
     function appLoad(sender, args) { 
      var xamlObject = document.getElementById('SilverlightObject'); 
      if (xamlObject != null) 
       xamlObject.focus(); 
     } 

et

<object id='SilverlightObject' data= ... 
      [snip] 
      <param name="onError" value="onSilverlightError" /> 
      <param name="onLoad" value="appLoad" /> 

Si vous ne possédez pas ce code dans la page HTML/ASPX hébergement d'une application Silverlight, tous le navigateur aller pressions sur les touches à la place.