1publicpartialclassNorthWind:UserControl
2 {
3 //DataGrid的数据
4 privateList<Products>_product;
5 //标示数据是否在DataGrid上
6 privateboolIsMouseInControl{get;set;}
7
8 publicNorthWind()
9 {
10 InitializeComponent();
11 //处理MouseWheel
12 MouseHelper.SetMouseWheelHandler(OnMouseWheel);
13 BindGrid();
14 }
15
16 privatevoidBindGrid()
17 {
18 //DataGrid绑定数据
19 //从WCF中获取Products数据,并保存到_product中。
20 //以下代码省略
21 }
22
23 publicvoidOnMouseWheel(objectsender,MouseWheelHandlerEventArgsargs)
24 {
25 //如果鼠标不在DataGrid上,就不做处理
26 if(!IsMouseInControl)return;
27 intmouseDelta=Math.Sign(args.Delta);
28 varselectedItem=dgData.SelectedIndex;
29 //每次向下滚动一条记录
30 varnextRow=selectedItem-(int)mouseDelta*1;
31 if(nextRow>-1&&nextRow<_product.Count)
32 {
33 dgData.ScrollIntoView(_product[nextRow],null);
34 dgData.SelectedIndex=nextRow;
35 }
36 }
37
38 privatevoiddgData_MouseEnter(objectsender,MouseEventArgse)
39 {
40 //鼠标进入DataGrid
41 IsMouseInControl=true;
42 }
43
44 privatevoiddgData_MouseLeave(objectsender,MouseEventArgse)
45 {
46 //鼠标离开DataGrid
47 IsMouseInControl=false;
48 }
49 }