我寫一個Windows應用程序8.1,我現在用了很長的GridView
。我正在使用UI虛擬化,而視圖模型包含一個包含100K項目的可觀察集合。ItemsWrapGrid隱藏物品通過偏移
<GridView ItemsSource="{Binding Items}">
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<ItemsWrapGrid Orientation="Vertical"/>
</ItemsPanelTemplate>
</GridView.ItemsPanel>
<GridView.ItemTemplate>
<DataTemplate>
<Border
Background="LightBlue"
Height="200" Width="200"
>
<TextBlock
Text="{Binding Index}"
VerticalAlignment="Center" HorizontalAlignment="Center"
FontSize="30"
/>
</Border>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
當使用默認項面板(ItemsWrapGrid)和朝列表的末尾滾動,在某一時刻開始的項目消失。
我與物品的各種大小進行了測試,並削波總是開始於同一滾動偏移量(約200萬個像素)。當我用WrapGrid替換面板時,錯誤不會發生。據我所知,ItemsWrapGrid
具有更好的虛擬化,並想使用它,但這個錯誤當然是不能接受的。
有沒有解決這個錯誤的方式,同時仍使用ItemsWrapGrid
?
我可以看看,你可以分享你的代碼? – ezaspi
該問題包含您需要的所有代碼。只需將數據上下文設置爲包含名爲Items的屬性的任何類,其中包含1000000個對象,您將看到它。 –
視圖嘗試呈現時,內存不足。也就是說,在我的Observable集合被填充並且xaml視圖開始顯示之後,我得到System.OutOfMemoryException。你是否正在做任何事情來避免OutOfMemoryException? – ezaspi