リストに追加する項目のタイプを定義するデータ テンプレートがある longlistselector があります。データ テンプレートには、ソースがパスに動的にバインドされる Image コントロールがあるため、リスト内の各項目には関連付けられた Image コントロールがあります。私が直面している問題は、これらの Image コントロールが占有しているメモリを決して解放せず、メモリ不足の例外が発生することです。通常のシナリオでは、 bitmapImage.UriSource=null を設定して、ビットマップに関連付けられたメモリの割り当てを解除しますが、このシナリオではそうする方法が見つかりません。longlistselector の xaml コードとそれに関連付けられているデータ テンプレートを次に示します。
データ テンプレート
<phone:PhoneApplicationPage.Resources>
<DataTemplate x:Key="MediaItemTemplate">
<Canvas VerticalAlignment="Top">
<Border BorderBrush="#FF4791CA" BorderThickness="3">
<Image Height="100" Width="100" VerticalAlignment="Top" Grid.RowSpan="2" Stretch="UniformToFill">
<Image.Source>
<BitmapImage UriSource="{Binding path}" CreateOptions="BackgroundCreation" DecodePixelHeight="50" DecodePixelWidth="50"/>
</Image.Source>
</Image>
</Border>
<Image Source="/Icons/check.png" Height="16" Width="16" Grid.Row="0" Grid.Column="0" VerticalAlignment="Top" Margin="80,7,7,0" Canvas.ZIndex="100" OpacityMask="Black" Visibility="{Binding visibility}" Name="checkImage" >
</Image>
</Canvas>
</DataTemplate>
</phone:PhoneApplicationPage.Resources>
ロングリストセレクター
<phone:LongListSelector
Tap="ListMedia_Tap"
x:Name="ListMedia"
HorizontalAlignment="Left"
Height="624"
VerticalAlignment="Top"
Width="436"
背景="透明"
ItemTemplate="{StaticResource MediaItemTemplate}" LayoutMode="Grid" GridCellSize="120,120"/>
私は Windows Phone プログラミングに非常に慣れていません。基本的にやりたいことは、一種の画像ブラウザー エクスペリエンスを開発することです。メモリの割り当てを解除する方法を教えてください。私が完全に間違っている場合は、私を修正するか、同じ機能を実現するためのより良い方法を提案してください。事前にサンクス...