Aside from just stating that normally, and in theory, the VirtualizingStackPanel approach (or, styling an existing control that is already virtualizing) should be the way to go - but with WPF, theory and practice are often diverging a lot... I would point you to the Performance Profiling Tools for WPF, to find out, in the first place, where exactly your CPU power is getting lost.