Silverlight页面不要再追输入事件
-
11-09-2019 - |
题
我一直试图在我的Silverlight应用程序来处理用户控件(页)的KeyDown事件,但似乎是对Silverlight的用户输入功能的一部分一些奇怪的行为。本次活动是没有得到任何情况下提出的。我甚至试图连接的事件处理程序的用户控件中的每个容器的控制,但仍然没有运气。事实上,Silverlight的用户输入“事件路由”系统是相当新颖,似乎很奇怪,我,也许这只是我的一个误解,虽然我宁愿无能如何继续。
下面的代码是与我正在测试的特定页面的模板。
<UserControl x:Class="MyNamespace.CreditsPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
KeyDown="UserControl_KeyDown">
<Grid x:Name="LayoutRoot">
<Border>
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Vertical">
<TextBlock TextAlignment="Center">
A line of text.<LineBreak />
<LineBreak />
A line of text.<LineBreak />
<LineBreak />
A line of text.<LineBreak />
<LineBreak />
A line of text.<LineBreak />
</TextBlock>
</StackPanel>
</Border>
</Grid>
</UserControl>
在WPF中,对这一问题的明显的解决办法是处理PreviewKeyDown事件,但不幸的是,这是不可用在Silverlight 2,任何想法将受到欢迎(为什么Silverlight的事件路由的简短解释行为,因为它是)。
解决方案
可以从主的UIElement管理用户输入:Application.Current.RootVisual
Application.Current.RootVisual.KeyDown += Application_KeyDown
然后,可以在Application_KeyDown方法从键盘所有用户输入处理。
您也可以看看这个问题:在Canvas
其他提示
我试过你提供,没有一个问题交给KeyDown事件。在XAML
有一件事情,可能会导致它:Silverlight插件将只能看到输入事件是否被聚焦。因此,尝试在浏览器中点击Silverlight内容按下键之前,给它输入焦点。
让我知道这是否解决您的问题或没有。
不隶属于 StackOverflow