2016-05-31 96 views
1

在我的UWP应用程序中,我有一个问题,有时候并不是所有的图像都被加载。它通常是一个或两个图像,但我已经看到至少5个。有时图像不加载

当图像消失时(例如在ListView),指向同一文件的所有图像都消失了。例如,一个ListViewItem在右上角有一个十字,它既可以用于整个列表,也可以不用于整个列表。

重现(10到30分钟)需要一段时间,但我总是得到问题。我的应用程序在调试模式下不超过100MB,所有图像都是本地的(应用程序未连接到互联网)。

有时图像被直接地(硬编码)加载在XAML图像像这样:通过在我的类结合到属性

<Image Source="/Assets/Images/BackButton.png"/> 

或者有时:

<Image Source="{Binding Image}"/> 
public string Image { get; set; } 

两个这些加载方法导致图像有时不显示。

我的用户也报告文本显示不正确,但我一直没能重现那一个。我提到它是因为它可能是相关的。

编辑:我注意到,当电脑处于低内存状态(例如:其他程序正在使用90%的计算机内存)时,图像将被删除。有没有办法禁用删除图像来释放内存?

+0

背后有什么逻辑显示图像的图像盒?我的意思是,它应该在整个运行时间内显示相同的图像吗?就像只是一个标志或图标或东西 –

+0

如果我加载一个硬编码的图像路径,我不会改变它。如果使用绑定加载,我不会更改它引用的属性(我不知道UWP中的列表视图是否回收单元格,但列表视图会滚动,因此如果列表视图回收单元格,它将在那里更改) – vrwim

+0

@FirstStep some这些图像是图标,有些会更大(我认为最大为400x400px) – vrwim

回答

1

设置上的图像CacheMode="BitmapCache"可能解决一个可能的平台错误,会导致它。

如果问题是由内存引起的压力 - 你可能希望确保使用较低分辨率的图像,并使用处于适当的屏幕分辨率分辨率的图片。至少 - 您可能希望查看诸如DecodePixelWidth之类的内容,以确保图像加载的分辨率不会太高。

+0

'CacheMode =“BitmapCache”'为我做了诡计(至少,我还没有能够重现)。 'DecodePixelWidth'是否有性能问题?如果是这样,与加载过大的图像相比有多大? – vrwim

+1

只需要将较大的图像文件解码为较小的图像比加载完整的图像文件更快,这仅仅是因为您有很多内存需要分配。 –