I need to list items (all of same size) vertically (with a ScrollViewer). I want the items to spread through x columns if the container is large enough to display
The only way to do this with a WrapPanel is to explicitly set the Height.
It looks like you want the items to be spread out evenly over the columns with the left column having at most one more item than the column to the right. If that is what you are looking for then you'll need to create your own custom panel. Take a look at this to see how to get started. You'll need an ItemWidth and ItemHeight dependency properties and calculate how many columns you can have by using the ItemWidth and available width.