WPF ScrollViewer嵌套Listbox无法滚动

来源:互联网 发布:unity3d实现物体闪烁 编辑:程序博客网 时间:2024/06/14 07:09

最近在做项目的时候,发现listBoxzi自带的垂直滚动条有问题,经常在Add(item)的时候下面会多出一些空白的部分,而且滚动条的长度也是无规则的,一会大一会小,索性就直接在listBox外面包裹一个ScrollViewer。
ScrollViewer中放一个listBox,可以拖动滚动条,但是滚轮上下滚动无效,后来查阅了资料找到原因,是因为listBox中自带一个滚动条,滚轮上下滚动事件应该是被截获了,而并没有传递到ScrollViewer这一层导致的,那么怎么解决呢?
很简单,直接让listBox.Enable=false或者listBox.IsHitTextVisable=false即可,但是这样有个缺点,就是无法选择listBox中的内容了,那只能用另一个方法,代码如下:

      ListBox.PreviewMouseWheel += (sender, e) =>           {               var eventArg = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta);               eventArg.RoutedEvent = UIElement.MouseWheelEvent;               eventArg.Source = sender;               ListBox.RaiseEvent(eventArg);           };
将listBox的滚动时间传递到上层,让ScrollViewer去处理即可.
0 0