サーバーから画像を取得しています。画像をリクエストしたときにサーバーから何枚の画像が来るかわかりません。画像を取得した後、下の図に示すように、各行に 3 列のグリッド ビューで表示したいと考えています。したがって、ここでは列が固定されています (3)。画像の数に基づいて行を変更する必要があります。
Windows Phone 8 でのやり方を教えてください。
サーバーから画像を取得しています。画像をリクエストしたときにサーバーから何枚の画像が来るかわかりません。画像を取得した後、下の図に示すように、各行に 3 列のグリッド ビューで表示したいと考えています。したがって、ここでは列が固定されています (3)。画像の数に基づいて行を変更する必要があります。
Windows Phone 8 でのやり方を教えてください。
1 つの可能性は、LongListSelector を使用して LayoutMode を Grid に設定することです。
次に、1 行に 3 つの画像のみが表示されるように GridCellSize を設定します (例: 画面の幅が 480 の場合、各行に 3 つの正方形の画像がある場合は GridCellSize を 160x160 に設定します)。
シンプルな Listbox を作成し、その ItemsPanel をtoolkit:WrapPanel
withに設定しますOrientation="Horizontal"
<ListBox Margin="0,40,0,0" ItemsSource="{Binding}" Width="450" VirtualizingStackPanel.VirtualizationMode="Recycling">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Height="150" Width="150">
<Image Height="130" Width="130" HorizontalAlignment="Center" VerticalAlignment="Center" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
注意点として、あまりにも多くの画像がビューにまとめて読み込まれると、Out Of Memory 例外が発生する可能性があります。したがって、追加する画像がサムネイルであり、完全な画像ではないことを確認してください。VirtualizationStackPanel を使用すると、パフォーマンスがわずかに向上する場合があります。