2016-05-31 99 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

只需要將較大的圖像文件解碼爲較小的圖像比加載完整的圖像文件更快,這僅僅是因爲您有很多內存需要分配。 –