整体思路:1.去掉
ScrollViewer控件中子控件自带的滚动条,只采用最外层ScrollViewer滚动条;
2.给ScrollViewer中子控件添加路由事件,使鼠标滚动时,外层ScrollViewer控件可以控制内部子控件
定义路由事件: UpDownScrollViewer.AddHandler(ListBox.PreviewMouseWheelEvent, new RoutedEventHandler(this.ScrollViewerMouseWheel));
控制鼠标滚动后,控制ScrollViewer控件移动位移
private void ScrollViewerMouseWheel(object sender, RoutedEventArgs e)
{
var a = e as MouseWheelEventArgs;
UpDownScrollViewer.ScrollToVerticalOffset(UpDownScrollViewer.VerticalOffset - a.Delta);
e.Handled = true;
}