我有一个 longlistselector,我有一个数据模板,用于定义要添加到列表中的项目类型。数据模板有一个 Image 控件,其源与路径动态绑定,因此列表中的每个项目都有一个关联的 Image Control。我面临的问题是这些图像控件永远不会释放它们占用的内存,从而导致内存不足异常。在正常情况下,我设置 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 编程很陌生,基本上我想做的是开发一种图像浏览器体验。请帮助我解决分配内存的方法。如果我做错了,请纠正我或提出更好的方法来实现相同的功能。提前谢谢...