我一直在尝试在我的 Silverlight 应用程序中处理 UserControl(页面)的 KeyDown 事件,但 Silverlight 用户输入功能部分似乎存在一些奇怪的行为。在任何情况下都不会引发该事件。我什至尝试将事件处理程序附加到 UserControl 中的每个容器控件,但仍然没有运气。确实,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 事件路由的行为如此的简短解释)。