BitmapImage 会 hold 住磁盘上的图片文件,导致无法删除,怎么让它 release?

alphapaopao 2012-03-14 05:03:20
图片是 ListView 中的一个项。ListView 采用 customized 的方法,将 DataTemplate 替换掉,变成下面的样子。每个 item 有一个 image. 通过 DataBinding 绑定到 Photo 图片文件的路径。UI 显示后,图片能显示出来。此时 BitmapImage 会 hold 住这个图片文件,导致无法从磁盘上删除这个文件,即便把绑定数据清除,这个文件仍然被 hold。清除绑定的方法如下:

ListView 绑定的是一个图片的数组 WarehousingImagesList。清除绑定,即从 WarehousingImagesList 中清除对应的元素。 UI 上相应的图片消失。

问题:如何让 BitmapImage 或者说让 ListView 释放这个文件?



<ListView Name="WarehousingImagesView" Grid.Row="1" Visibility="Visible">
<ListView.View>
<l:ImageView/>
</ListView.View>
<ListView.ItemsSource>
<Binding Path="WarehousingImagesList"/>
</ListView.ItemsSource>
</ListView>




<DataTemplate>
<Border>
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Image Grid.Row="0" Margin="3" Height="200">
<Image.Source>
<BitmapImage DecodePixelHeight="200" UriSource="{Binding Path=Photo}">
</BitmapImage>
</Image.Source>
</Image>
<TextBlock Grid.Row="1" Text="{Binding Path=Name}"/>
</Grid>
</Border>
</DataTemplate>
...全文
123 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
alphapaopao 2012-03-14
  • 打赏
  • 举报
回复
http://blogs.vertigo.com/personal/ralph/Blog/Lists/Posts/Post.aspx?ID=18 这是另一个方法
alphapaopao 2012-03-14
  • 打赏
  • 举报
回复
http://joshsmithonwpf.wordpress.com/2008/02/21/deleting-an-image-file-displayed-by-an-image-element/ 这貌似是一个可能的解决方法。

17,748

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧