2011-04-10 22 views
0

我必须在WPF应用程序中创建几个列表框,这些列表框预计会显示大量项目。所有数据来自oracle数据库。如何在WPF中管理包含非常大数据的列表框?

据我所知,virtualizingstackpanel适用于大数据显示的性能,但我想它只能控制优化的listboxitems的生成。我也想控制RAM,因为我有几个。我在想,与oracle打开的光标连接应该能够达到最小化RAM的目的,并且使用虚拟化面板可以优化列表框项目的生成。但我无法弄清楚如何去做。

有没有现成的控件或代码我可以参考来解决这个问题?

+2

换句话说,您正在寻找数据虚拟化,而'ListBox'只提供UI虚拟化。 – BoltClock 2011-04-10 18:29:58

+2

只是出于好奇,这个数据有多大(你试图在列表框中显示多少项)? – 2011-04-10 21:18:39

回答

1

坏消息:我不认为你能够使用从ItemsControl派生的任何东西。它看起来像ItemsSource被设置时,Items集合被固定和只读,所以你不能只创建自己的IEnumerable。这意味着您可能最终不得不自己完成数据虚拟化和UI虚拟化。 (见http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.itemssource.aspx

这就是说,你可能会做一些围绕你的对象的包装技巧。例如,如果您检索了一个计数,您可能可以创建一个包装对象的轻量级列表。包装对象将包含将访问游标的自定义getter/setter属性。我认为这不会太难。好消息:它看起来像Telerik可能有一些利益控制 - http://blogs.telerik.com/blogs/posts/10-10-20/data_virtualization_for_your_silverlight_and_wpf_applications.aspx - 如果你愿意支付。

祝你好运!

相关问题