2011-04-10 89 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 - 如果你願意支付。

祝你好運!

相關問題