Check out WPF Tips'n'Tricks #6: Preventing ScrollViewer from handling the mouse wheel.
Not only does ScrollViewer handles the mouse scrolling even when no more scrolling is needed, but it also does so when there's nothing to scroll, or worse when it is told not to scroll!
How can we change the ScrollViewer to behave more like it's supposed to? The most direct approach is to leverage the tunneling and bubbling events and use them against the buggy control.
The idea is that if the PreviewMouseWheel is handled, WPF will not generate the MouseWheel event, and in turn the ScrollViewer will not scroll.
The article includes the code for a full solution to the problem.
Quartermeister
2010-08-26 12:15:42