0

約 100 枚の写真を返す Web サービスがあり、すべてを Windows Phone 7 の 3xN グリッドに表示したいと考えています。

私は WrapPanel を試してみましたが、うまくいきましたが、ほんの数枚の画像で..それ以上だと、メモリが不足し、デバッグが停止します。

コード:

<ListBox Height="600" HorizontalAlignment="Left" Name="screenshotsListBox" VerticalAlignment="Top" Width="420">
                    <ListBox.ItemsPanel>
                        <ItemsPanelTemplate>
                            <toolkit:WrapPanel />
                        </ItemsPanelTemplate>
                    </ListBox.ItemsPanel>
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <Grid>
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="Auto" />
                                </Grid.RowDefinitions>
                                <Image Source="{Binding}"
                Margin="0"
                Height="110"
                Width="110"
                CacheMode="BitMapCache"
                Stretch="UniformToFill"
                Grid.Row="0" />
                            </Grid>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>

すべての画像を文字列配列に配置し、それを listBox にバインドします。

すべてのメモリを消費することなく、Web サービスからダウンロードした写真のグリッドを表示するためにできることはありますか? ありがとう

4

1 に答える 1

1

メモリ使用量の実際の原因を特定するためにコードをプロファイリングすることをお勧めしますが、110x110 ピクセルとしてのみ表示している場合、必要以上に大きな画像を [ダウンロード] している可能性が高いと思います。バージョン。小さいサイズに引き伸ばして (縮小して) 表示している場合でも、イメージ全体がメモリに読み込まれます。それらが大きな画像である場合、メモリ使用量は非常に急速に増加します。

http://blogs.msdn.com/b/swick/archive/2011/04/07/image-tips-for-windows-phone-7.aspxには、画像とメモリに関する役立つヒントがいくつかあります。

于 2012-05-23T09:09:25.043 に答える