最近在做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
