It is difficult to test since you did not provide any information about your user controls.
I would suggest ListBox , since the behavior you are trying to emulate is indeed a WrapPanel .
Due to the fact that you add so many user controls to each ListBox , I assume that this leads to performance hit. If you switched to a WrapPanel and then tied to your collection of elements, you are likely to get better performance since each element will be virtualized rather than trying to virtualize six elements at a time (which probably doesn't work).
Edit: Looking through my code, I think there are a few changes you could make to improve performance. First of all, get rid of the ListBox and use the ItemsControl as follows:
<controls:Pivot Title="LANDER GAME"> <controls:PivotItem Header="Episodes"> <ScrollViewer> <ItemsControl ItemsSource="{Binding EpisodeRows}" toolkit:TiltEffect.SuppressTilt="True" Margin="12,0"> <ItemsControl.ItemTemplate> <DataTemplate> <Grid VerticalAlignment="Top" Height="111" > <StackPanel Orientation="Horizontal" Visibility="{Binding TilesVisibility}"> ... </StackPanel> <TextBlock VerticalAlignment="Top" Text="{Binding EpisodeTitleText}" Style="{StaticResource PhoneTextExtraLargeStyle}" Margin="0,0,0,5" Visibility="{Binding TitleVisibility}" /> </Grid> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> </ScrollViewer> </controls:PivotItem>
What I would like to do is get rid of the hard-coded variable types PartText_1 , PartText_2 . Just create a list of items and another ItemsControl inside your other control.
Just getting rid of the ListBox made it smoother. I also removed VirtualizingStackPanel.VirtualizationMode="Recycling" , as it caused a performance hit in the beginning, once it booted up, it seemed smoother.
source share