在Windows Phone上实现可滚动表

我需要为电视指南创建一个应用程序。 要求是UI必须是您在此处可以看到的副本: raspored.bnet.hr 。 如您所见,有很多数据。 所以,基本上它将是一个大型可滚动表。 由于Windows Phone上没有这样的UI控件,我发现最好的方法是创建一个垂直列表框,其中包含水平列表框。 这一切都很好,我可以创建它。 但是,为了使其行为像表格,我还需要使这些水平列表框同步滚动,而不是一次滚动一行。 然后我在水平列表框上禁用水平滚动,并在父(垂直)列表框上启用它,当它给出结果我想实现一个大问题 – UI虚拟化。 我知道ListBox默认启用了UI虚拟化,我可以在垂直列表框上滚动时看到它,但是当我在水平列表框上禁用水平滚动时,性能非常差,有时会出现OutOfMemoryException。 我理解为什么会发生这种情况,因为当我禁用水平滚动时,那些列表框不再知道哪些项目在屏幕上,所以将它们全部加载到内存中。

我还尝试了在每个列表框上留下滚动,以便他们具有UI虚拟化,然后将ScrollViewer放在它们之上。 然后我尝试在scrollviewer上监听Manipulation事件,并根据需要以progamatically方式滚动所有列表框。 这不起作用,首先ManipulationDelta事件似乎没有频繁发生以使滚动顺利,我认为在~180列表框上调用ScrollToHorizo​​ntalOffset可能会出现性能问题。

我也尝试过WP8中的LongListSelector,因为我读到它有更好的UI虚拟化,应该用来代替ListBox。 这个问题是我不能让它水平滚动。 有可能吗? 我试图将它包装到ScrollViewer中,它可以水平滚动并且它正常工作,但前提是我在LLS上设置了固定宽度。

我也试过Telerik的RadDataBoundListBox并且问题类似,我不能在同一个列表框上同时获得水平和垂直滚动。 所以我只能得到每个列表自己滚动。

有人可以告诉我他们是否有类似的情况以及解决这个问题的最佳方法是什么? 我相信我不是唯一一个有这个要求来实现大型可滚动表的人。

谢谢

更新:我只是告诉你我没有找到一种正确的方法来实现它,而是我用HTMLB和WebBrowser控件完成了它。 似乎IE已经实现了UI虚拟化,因此它可以很好地处理大页面。

可能在你的列表框中有图片吗? 和内存不足Execption会发生你可以做两件事:

  1. 不要一次性加载数据使用BackgroundWorker
  2. 在您正在下载的图像的应用程序中有一个本地图像并将其设置为默认图像,当您向前滚动到约50个值时,将图像Url清除到本地,当它返回时再次给出您想要显示的图像URL。
    因为我用它来滚动大约20k的值。