我想在silverlight 页面中直接实现按下↑、↓进行翻页的功能,但是silverlight的Grid貌似捕获不到 KeyDown事件,请问大家知不知道为什么,有办法解决吗
听说你有要做考试系统了?哈哈
另外,keydown的事件你可以试试不要写在Grid上,最外面的UserControl上应该是能触发的。
可以通过扩展DataGrid即可实现,以下就是实现方法
首先重写控件DataGrid中的方法OnKeyDown来实现
1 public class BindableDataGrid : DataGrid
2 { //声明一个委托,当通过键盘输入时,触发这个事件
3 public delegate void OnKeyDownDefine(System.Windows.Input.KeyEventArgs e);
4 public OnKeyDownDefine OnKeyDowned;
5 protected override void OnKeyDown(System.Windows.Input.KeyEventArgs e)
6 {
7 base.OnKeyDown(e);
8 if (OnKeyDowned != null)
9 {
10 OnKeyDowned(e);
11 }
12 }
13 }
通过上面的扩展,那么就可以直接用类BindableDataGrid,这个你一定知道,用BindableDataGrid就像用DataGrid一样。首先你需要在XAML中引用刚才的命名空间,如下面那样
xmlns:local="clr-namespace:HIEG2.Portal.ResourceApp"
然后就可以在XAML中写入以下代码
<local:BindableDataGrid x:Name="radGridView" Margin="0,0,0,0" Height="507" />
然后CS中的构造函数中写入以下代码,通过下面的代码就可以捕捉到你想要的效果了,后面的你可以根据自己的需要写程序了,你也可以自己再扩展。
radGridView.OnKeyDowned += new BindableDataGrid.OnKeyDownDefine(
(e) =>
{
if (e.Key == Key.Down)
{
radDataPager.PageIndex++;
}
else if (e.Key == Key.Up)
{
radDataPager.PageIndex--;
}
}
);
希望以上代码对你有用,我已经试过,可以实现你要的结果