最近在做WPF的项目,ListBox 纵向滚动条不显示,但是鼠标滚轮可以在ListBox中使用,但是必须要出现纵向滚动条。
索性就直接在listBox外面包裹一个ScrollViewer。 ScrollViewer中放一个listBox,可以拖动滚动条,但是滚轮上下滚动无效,后来找到原因,是因为listBox中自带一个滚动条,滚轮上下滚动事件应该是被截获了,而并没有传递到ScrollViewer这一层导致的,那么怎么解决呢? 很简单,直接让listBox.Enable=false或者listBox.IsHitTestVisable=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去处理即可. 原文出处: https://blog.csdn.net/wcc27857285/article/details/53283169