public void ScrollIntoView(Object item, DataGridColumn column)
点击展开示例代码
namespace SilverlightDemoApp 
...{
public delegate void MouseWheelEventHandler(object sender, MouseWheelHandlerEventArgs e);
public class MouseWheelHandlerEventArgs : EventArgs 
...{
double delta;
public MouseWheelHandlerEventArgs() : this(0) ...{ }
public MouseWheelHandlerEventArgs(double delta) 
...{
this.delta = delta;
}
public double Delta ...{ get { return delta; } }
}
internal static class MouseHelper 
...{
static List<MouseWheelEventHandler> wheelHandler = new List<MouseWheelEventHandler>();
public static void SetMouseWheelHandler(MouseWheelEventHandler _wheelHandler) 
...{
wheelHandler.Add(_wheelHandler);
if (HtmlPage.IsEnabled && HtmlPage.Window != null) 
...{
HtmlPage.Window.AttachEvent("DOMMouseScroll", OnMouseWheelTurned);
HtmlPage.Window.AttachEvent("onmousewheel", OnMouseWheelTurned);
HtmlPage.Document.AttachEvent("onmousewheel", OnMouseWheelTurned);
}
}
static void OnMouseWheelTurned(Object sender, HtmlEventArgs args) 
...{
double delta = 0;
ScriptObject eventObj = args.EventObject;
if (eventObj.GetProperty("wheelDelta") != null) 
...{
delta = ((double)eventObj.GetProperty("wheelDelta")) / 120;
if (HtmlPage.Window.GetProperty("opera") != null)
delta = -delta;
}
else if (eventObj.GetProperty("detail") != null) 
...{
delta = -((double)eventObj.GetProperty("detail")) / 3;
if (HtmlPage.BrowserInformation.UserAgent.IndexOf("Macintosh") != -1)
delta = delta * 3;
}
if (delta != 0) 
...{
args.PreventDefault();
eventObj.SetProperty("returnValue", false);
}
foreach (MouseWheelEventHandler handler in wheelHandler) 
...{
handler(null, new MouseWheelHandlerEventArgs(delta));
}
}
}
}
点击展开示例代码
public partial class NorthWind : UserControl 
...{
//DataGrid的数据
private List<Products> _product;
//标示数据是否在DataGrid上
private bool IsMouseInControl ...{ get; set; }
public NorthWind() 
...{
InitializeComponent();
//处理MouseWheel
MouseHelper.SetMouseWheelHandler(OnMouseWheel);
BindGrid();
}
private void BindGrid() 
...{
//DataGrid 绑定数据
//从WCF中获取Products数据,并保存到_product中。
//以下代码省略
}
public void OnMouseWheel(object sender, MouseWheelHandlerEventArgs args) 
...{
//如果鼠标不在DataGrid上,就不做处理
if (!IsMouseInControl) return;
int mouseDelta = Math.Sign(args.Delta);
var selectedItem = dgData.SelectedIndex;
//每次向下滚动一条记录
var nextRow = selectedItem - (int)mouseDelta * 1;
if (nextRow > -1 && nextRow < _product.Count) 
...{
dgData.ScrollIntoView(_product[nextRow], null);
dgData.SelectedIndex = nextRow;
}
}
private void dgData_MouseEnter(object sender, MouseEventArgs e) 
...{
//鼠标进入DataGrid
IsMouseInControl = true;
}
private void dgData_MouseLeave(object sender, MouseEventArgs e) 
...{
//鼠标离开DataGrid
IsMouseInControl = false;
}
}OK,这样就完工了,希望对你有所帮助!
相关资源推荐:DXperience 8.32 官网