我正在開發一個Universal Win App,並且這個問題出現在兩個平臺上。我有一個ObservableCollection與產品,對象屬性綁定從xaml DataTemplate和ObservableCollection被設置爲ItemsSource到GridView。GridView內存不足,大量的ObservableCollection
private ObservableCollection<Product> productList = new ObservableCollection<Product>();
綁定產品也有圖片。
<Image
CacheMode="BitmapCache"
Source="{Binding ImageUrl}"
Stretch="Uniform" />
的GridView
<ScrollViewer
x:Name="ProductList_GridView_ParentScrollViewer"
VerticalScrollBarVisibility="Hidden"
Grid.Row="1">
<StackPanel
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch">
<Viewbox
AllowDrop="False"
ScrollViewer.HorizontalScrollMode="Disabled"
ScrollViewer.HorizontalScrollBarVisibility="Hidden"
ScrollViewer.VerticalScrollBarVisibility="Hidden"
ScrollViewer.VerticalScrollMode="Disabled"
Stretch="UniformToFill">
<GridView
x:Name="ProductList_GridView"
Margin="15,9.5,15,0" />
</Viewbox>
</StackPanel>
</ScrollViewer>
另外我有一種分頁設置,這使得每個時間滾動高度等於垂直偏移請求。而我做
foreach (var item in requestResult.products)
{
productList.Add(item);
}
添加新項目的ObservableCollection這似乎直到我達到一定數量的物品,做工精細。之後,該應用程序崩潰。在2GB RAM設備上崩潰之前,我的應用程序的內存消耗高達800Mb。在512Mb ram上它早先崩潰了。
我該如何解決這個問題?我需要改變我做這個分頁的方式嗎?或者可以通過小的修改來修復它。我想這個問題是與圖像,但不知道。是不是CacheMode =「BitmapCache」應該修復內存問題?
動畫控件時,才應使用BitmapCache。在這種情況下,沒有必要使用它。你是否啓用了虛擬化? –
你應該把你的GridView的ItemsPanel設置爲'ItemsStackPanel' –
忘了提及我有ItemsPanel作爲ItemsWrapGrid。但我使用它的MaximumRowsOrColumns屬性。 ItemsStackPanel沒有。 – garenyondem