我必须在WPF应用程序中创建几个列表框,这些列表框应该显示大量项目。所有数据都来自oracle数据库。
据我所知,virtualizingstackpanel适用于大数据显示中的性能,但我猜它只控制listboxitems的生成以进行优化。我也想控制RAM,因为我有几个。我认为与oracle的开放游标连接应该用于最小化RAM,并且使用virtualizingpanel将优化listboxitems的生成。但我无法弄清楚如何去做。
是否有现成的控件或代码可以参考解决此问题?
答案 0 :(得分: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 - 如果你愿意支付。
祝你好运!