2017-04-06 120 views
1

重建他們我在的Windows Phone 8.1的WinRT應用程序,它也是團體項目有ListView。組模板已定義,並且它們包括Rectangle對象,其ImageBrush對象的Fill屬性。 該ListView具有ItemsStackPanel作爲其ItemsPanel顯示的項目和基團。ItemsStackPanel一直使用緩存的項目,而不是每次都

問題是,我認爲,重複使用物品容器,同時虛擬化,因爲圖像被加載和繪製一次,但是當我滾動時,圖像的訂單有一些混亂,其中一些丟失圖像和圖像加載事件ImageBrush也不會被解僱,表明項目被緩存。

我試過在ItemsStackPanel上設置VirtualizingStackPanel.VirtualizationMode="Standard"而不是"Recycling",但似乎沒有任何效果。

任何幫助,將不勝感激。

+0

你在隱藏代碼隱藏的列表視圖項目對象嗎?我知道如果你使用模板正確地做到這一點,WPF永遠不會發生,但我認爲你真的在UWP中,並且你只是添加了WPF標籤,希望能夠被暴躁的老人降低(沒有在我的情況下工作,也許我不老或足夠煩躁)。 –

+0

我唯一要做的就是訂閱ImageBrush.ImageFailed事件的情況下,加載默認的圖像與主圖像不能因爲某些原因被打開(但第一次創建項目後的處理程序沒有被擊中,僅在第一次)。 ItemsWrapGrid綁定到相同的源不會有這個問題。有任何想法嗎? 我特別指出Windows Phone 8.1是WinRT的平臺,但我認爲WPF足夠接近,以至於有人可能會遇到同樣的問題並且可以提供幫助。 – TheAgent

+0

沒有想法,對不起。如果我是你,我會創建一個能夠再現問題的最小例子。通常對我而言,我發現我*不能*在更簡單的上下文中重現問題,所以我只是比較非破壞的示例和破碎的真實代碼並找到解決方案。但是,如果你能寫出一個可行的MVCE(呃,不起作用,我的意思是),那對任何想要幫助的人來說都是一個巨大的幫助。 –

回答

0

原因ItemsStackPanel的組頭模板中的處理ImageBrush.ImageFailed(或任何其他事件)會導致非常奇怪的行爲。

我並沒有真正解決問題,只是刪除了事件處理程序和實施的另一種機制,當找不到主圖像文件來加載默認圖像。

我有另一個默認圖像加載在Image和其他Image放在第一個之上,加載實際的圖像文件。如果加載失敗,則顯示下面的內容。

相關問題