Есть несколько возможностей.
1) Если ваша сетка всегда 4х5, вы можете использовать обычную сетку. Как то так:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.2*"/>
<RowDefinition Height="0.2*"/>
<RowDefinition Height="0.2*"/>
<RowDefinition Height="0.2*"/>
<RowDefinition Height="0.2*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.25*"/>
<ColumnDefinition Width="0.25*"/>
<ColumnDefinition Width="0.25*"/>
<ColumnDefinition Width="0.25*"/>
</Grid.ColumnDefinitions>
<Button Content="Button" />
<Button Content="Button" Grid.Column="2" Grid.Row="0"/>
<Button Content="Button" Grid.Column="1" Grid.Row="1" />
</Grid>
2) Silverlight для Windows Phone Toolkit содержит WarpPanel. Вы можете задавать элементы в WrapPanel шириной и высотой, и они будут складываться вместе, как 2D-панель стека. Если ширина обертки изменяется, то изменяется и количество элементов в строке.