2010-10-07 4 views
1

Я пытаюсь добавить обработчик событий KeyDown в LayoutRoot представления в проекте Silverlight SketchFlow, но он, похоже, не срабатывает.KeyDown не работает в SketchFlow

Событие срабатывает, если я изменяю тип события на MouseLeftButton, но я хочу продемонстрировать это с помощью сочетания клавиш.

Кто-нибудь знает, как выполнить оба?

ответ

1

Ну, по некоторым причинам, не очевидным для незваного, событие KeyDown не срабатывало, если указано в XAML. Я обнаружил, что привязка к Application.Current.RootVisual.KeyDown в кодовом замке делает трюк.

0

Причина в том, что ваш LayoutRoot на самом деле не «корень макета» при размещении в проигрывателе SketchFlow. Фокус на клавиатуре первоначально находится на проигрывателе Sketchflow.

Возможно, вы попытаетесь добавить вызов Focus() в событие, загруженное страницей, но также убедитесь, что вы добавили Jscript для первоначального фокуса на фактический объект Silverlight браузера. например

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

и

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

Если у вас нет этого кода на странице HTML/ASPX хостинг в Silverlight приложения, все нажатия клавиш перейти браузер вместо этого.