码迷,mamicode.com
首页 > 其他好文 > 详细

解决ScrollViewer嵌套的DataGrid、ListBox等控件的鼠标滚动事件无效

时间:2015-06-11 20:55:49      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

C# 中,两个ScrollViewer嵌套在一起或者ScrollViewer里面嵌套一个DataGrid、ListBox、Listview(控件本身有scrollviewer)的时候,我们本想要的效果是鼠标滚动整个ScrollViewer的内容,但你会发现实际结果和你想像的不一样,内部有scrollviewer的内容不会随鼠标的滚动而滚动,怎么办呢?

解决办法如下:

先截取外面的ScrollViewer的滚动事件,然后再重新让外面的ScrollViewer触发滚动事件就可以了

假设有2个控件,一个是Listbox(内部名字是listbox),一个是ScrollViewer(外部),Listbox在ScrollViewer内部的,并且ListBox的scroll滚动功能都禁用为Disabled,只启用外部ScrollViewer的滚动功能,这时添加如下代码,则能使ListBox中的内容随ScrollViewer的鼠标滚动而滚动

listbox.PreviewMouseWheel+=(sender,e)

{

var eventArg = new MouseWheelEventArgs(e.MouseDevice,e.TimeDevice,e.Delta);

eventArg.RoutedEvent = UIElement.MouseWheelEvent;

eventArg.Source = sender;

var listbox = (Listbox) sender;

listbox.RaiseEvent(eventArg);

};

解决ScrollViewer嵌套的DataGrid、ListBox等控件的鼠标滚动事件无效

标签:

原文地址:http://www.cnblogs.com/lionwang/p/4569847.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!