Wrap your StackPanel
in another panel
WPF's ScrollViewer tries to scroll entire elements into view at a time, which is why you see the jumpy scroll behavior. By nesting the StackPanel in another Panel, the ScrollViewer will try and scroll the entire StackPanel into view, which is too big so it will use smooth scrolling.
Here's an example - Removing the DockPanel will give you a jumpy scroll, but with it you'll get smooth scrolling behavior