WinRT XAML ScrollViewer / ListView渲染巨大的列表在设备上不起作用

时间:2015-11-02 05:20:53

标签: xaml winrt-xaml

从以下代码开始

<Grid>
    <ScrollViewer>
        <ListView Name="listview" ItemsSource="{Binding Source={StaticResource list}}" />                   
    </ScrollViewer>
</Grid>

我有很多关于1k项目的winrt应用程序列表。滚动需要太多时间,所以我已经实现了滚动到顶部和底部的功能。

listview.SelectedIndex 
listview.UpdateLayout();
listview.ScrollIntoView(SelectedItem);

所有这些在ListView中有大约1000个项目的模拟器上工作正常。但是当我使用Surface设备运行应用程序时,此方法不起作用。它实际上失败并在尝试渲染ListView时绘制黑色矩形。

我刚刚浪费了两天时间。我尝试过很多东西,但没有运气。有人可以告诉我如何使用ScrollViewer使用ListView并在Surface设备上使用MVVM来处理长列表。只需在Surface设备上平滑滚动,列表超过1000,同时以编程方式从头到尾移动。

PS:实施搜索不是选项。

1 个答案:

答案 0 :(得分:1)

您应该删除外部ScrollViewer,因为这会破坏虚拟化。除此之外,面板的大小有限,您可以滚动到大约200万像素高/宽。之后,您将看到渲染问题。

解决这个问题的唯一方法是相当复杂,并且需要从头开始编写自己的列表控件。我认为还没有人做过。通常,如果数据太大 - 人们会使用其他策略,例如分组和扩展组。