WPF滚动条嵌套,响应鼠标滑轮事件的处理
2014-03-31 10:52
911 查看
在C# 中,两个ScrollViewer嵌套在一起或者ScrollViewer里面嵌套一个ListBox、Listview(控件本身有scrollviewer)的时候,我们本想要的效果是鼠标滚动整个ScrollViewer的内容,但你会发现实际结果和你想像的不一样,内部有scrollviewer的内容不会随鼠标的滚动而滚动,怎么办呢?
解决办法如下:
先截取内部的ScrollViewer的滚动事件,然后再重新让外部的ScrollViewer触发滚动事件就可以了
假设有2个控件,一个是Listbox(内部名字是listbox),一个是ScrollViewer(外部),Listbox在ScrollViewer内部的,并且ListBox的scroll滚动功能都禁用为Disabled,只启用外部ScrollViewer的滚动功能,这时添加如下代码,则能使ListBox中的内容随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; this.listbox.RaiseEvent(eventArg); };
如果 是在
模版内部,拿不到listbox实例 ,可用sender强转成对象示例。有多级嵌套同理,都把事件路由上去
凡是含有ScrollViewer的控件或者ScrollViewer自身都适合
相关文章推荐
- 滚动条响应鼠标滑轮事件实现上下滚动的js代码
- 滚动条响应鼠标滑轮事件实现上下滚动的js代码
- 滚动条响应鼠标滑轮事件实现上下滚动的js代码
- Flex中一个鼠标事件多处响应的处理
- JavaScript Wheel Event - 使用JavaScript处理浏览器的鼠标滑轮事件
- RecyclerView处理鼠标滑轮滑动事件
- js处理鼠标及滚动条事件
- java小程序中鼠标事件的响应处理(包含右键、双击等)
- 处理鼠标响应事件(最简单控件 good)
- android map高德地图显示多个点,并且每个marker点可以响应鼠标点击事件,处理跳转页面
- [WPF] 为Style 里的button添加鼠标点击响应事件
- wpf Canvas 对鼠标事件不响应的解决办法
- javascript滚动栏响应鼠标滑轮的实现上下滚动事件
- java小程序中鼠标事件的响应处理(包含右键、双击等)
- WPF中对鼠标事件转换为命令处理模式的鼠标位置参数传递及EventArgs传递
- 滚动条QScroolBar实现滚屏功能(屏幕过大,覆盖wheelEvent来处理滑轮事件)
- 简易的自定义滚动条加鼠标滑轮事件结合使用
- javascript滚动条响应鼠标滑轮的实现上下滚动事件
- javascript滚动栏响应鼠标滑轮的实现上下滚动事件
- java小程序中鼠标事件的响应处理(包含右键、双击等)