Попробуйте использовать WrapPanel в качестве панели элементов вашего ListView и отключите горизонтальную полосу прокрутки:
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
...
</ListView>
Обновление: itowlson предлагает это объяснение, чтобы прояснить ситуацию: ItemTemplate указывает, как каждый элемент должен быть представлен Это не влияет на расположение предметов. ItemsPanel, напротив, определяет макет.
Кроме того, вы можете захотеть, чтобы все элементы отображались одинакового размера. Вы можете узнать, как это сделать из этой статьи: http://joshsmithonwpf.wordpress.com/2008/09/06/synchronizing-the-width-of-elements-in-an-itemscontrol/