【问题标题】:KeyDown not fired in SketchFlow在 SketchFlow 中未触发 KeyDown
【发布时间】:2010-10-08 16:40:46
【问题描述】:

我正在尝试将 KeyDown 事件处理程序添加到 Silverlight SketchFlow 项目中视图的 LayoutRoot,但它似乎没有触发。

如果我将事件类型更改为 MouseLeftButton,则会触发该事件,但我想使用键盘快捷键来演示这一点。

有谁知道如何同时完成这两个任务?

【问题讨论】:

    标签: silverlight silverlight-4.0 keydown sketchflow


    【解决方案1】:

    好吧,由于某些对不速之客来说并不明显的原因,KeyDown 事件在 XAML 中指定时没有触发。我发现在代码隐藏中挂钩 Application.Current.RootVisual.KeyDown 可以解决问题。

    【讨论】:

      【解决方案2】:

      原因是,当托管在 SketchFlow 播放器中时,您的 LayoutRoot 实际上不是“那个”布局根。键盘焦点最初位于 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" />
      

      如果托管 Silverlight 应用程序的 HTML/ASPX 页面中没有该代码,则所有按键都转到浏览器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-07
        相关资源
        最近更新 更多