我试图将KeyDown事件处理程序添加到Silverlight SketchFlow项目中的视图的LayoutRoot中,但它似乎无法触发。
如果我将事件类型更改为MouseLeftButton,就会触发该事件,但我想使用键盘快捷键来演示这一点。
有没有人知道如何做到这两点?
发布于 2010-10-08 04:53:46
好吧,出于一些对未被邀请的人来说不明显的原因,在XAML中指定时,KeyDown事件不会触发。我发现在代码隐藏中挂钩到Application.Current.RootVisual.KeyDown是可行的。
发布于 2010-10-08 16:40:46
原因是,当托管在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页面中没有该代码,则所有的按键操作都会转到浏览器。
https://stackoverflow.com/questions/3885705
复制相似问题