Een WrapPanel probeert automagisch alle controls zichtbaar te krijgen in het window. Mocht dat niet lukken, kun je deze in een ScrollViewer control stoppen....
maar standaard werkt dit niet.
De width van de WrapPanel moet overeenkomen met die van zijn parent control, de ScrollViewer dus. Databinding is hier de oplossing:
<ScrollViewer HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Auto">
<WrapPanel Width="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ScrollViewer}}, Path=ActualWidth}"
Orientation="Horizontal" >
.... child controls ....
</WrapPanel>
</ScrollViewer>