By default, <ItemsControl>
/<ScrollViewer>
doesn't use virtualization.
All its items are rendered at once.
This causes lags/freezing on first render and each re-render (for example, if list data or window size changes).
Adding ScrollViewer.CanContentScroll="True"
will enable virtualization and make loading fast.
But the list will be scrolled one whole item a time, which feels like jumping if items height is big enough.
To make virtualization enabled and keep smooth scrolling, add also VirtualizingPanel.ScrollUnit="Pixel"
You have saved my day with this! Thanks