在SketchFlow中未触发KeyDown

时间:2010-10-07 20:40:11

标签: silverlight silverlight-4.0 keydown sketchflow

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

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

有谁知道如何完成这两项工作?

2 个答案:

答案 0 :(得分:1)

好吧,由于某些原因对于不请自来的人来说并不明显,在XAML中指定时,KeyDown事件没有触发。我发现在代码隐藏中挂钩Application.Current.RootVisual.KeyDown就可以了。

答案 1 :(得分:0)

原因是您的LayoutRoot在SketchFlow播放器中托管时实际上是“the”布局根。键盘焦点最初是在Sketchflow播放器上。

您可以尝试在页面加载的事件中添加Focus()调用,但也要确保已添加Jscript,以便最初首先关注实际的浏览器Silverlight对象。 e.g。

<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页面中没有该代码,则所有按键都会转到浏览器。