将 ListView 更改为水平时的 C#/UWP OutOfMemory
C#/UWP OutOfMemory when change ListView to horizontal
我有一个包含大约 700 个条目的 ListView(每个条目一个图像)。 ListView 在垂直滚动模式下工作得很好。但是当我将它更改为 Horizontal 时,它会在 phone 上崩溃并出现 OutOfMemory 异常。
我使用 Microsoft 的代码更改了滚动方向:
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
Lord Windows 似乎试图在更改 Orientation 时立即加载完整列表。还有其他人遇到过这个问题,甚至可以提供解决方案吗?
通过使用 StackPanel
,您将失去虚拟化。因此,当您滚动列表时,所有 700 个条目都会立即存储在内存中。使用 VirtualizingStackPanel
或更好,使用 GridView
而不是 ListView
。
我有一个包含大约 700 个条目的 ListView(每个条目一个图像)。 ListView 在垂直滚动模式下工作得很好。但是当我将它更改为 Horizontal 时,它会在 phone 上崩溃并出现 OutOfMemory 异常。
我使用 Microsoft 的代码更改了滚动方向:
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
Lord Windows 似乎试图在更改 Orientation 时立即加载完整列表。还有其他人遇到过这个问题,甚至可以提供解决方案吗?
通过使用 StackPanel
,您将失去虚拟化。因此,当您滚动列表时,所有 700 个条目都会立即存储在内存中。使用 VirtualizingStackPanel
或更好,使用 GridView
而不是 ListView
。