2011-09-15 76 views
1

在我的WPF應用程序中,我有一個帶有選項卡控件的屏幕。其中五個選項卡包含需要顯示大量行(至少5000)的數據網格。這些表綁定到Part對象的ObservableCollections。每行顯示約20個零件數據。我的問題是,在用戶輸入他們需要的信息並生成數據後,單擊選項卡會導致應用程序掛起30-60秒。在這之後,datagrid最終加載,並且具有正確的虛擬化設置,它們以可接受的速率執行(不是很快,但不是太慢)。如果我禁用虛擬化,程序會佔用過多內存,加載時間不會受到影響。具有大量行的數據網格

最厭惡的表格由大約六個模板列組成。每個模板包含一個堆棧面板或一個網格內的控件;基本上每行都被分成兩部分,就像一個雙排。這種佈局是一種要求,分頁可能不是客戶願意接受的。

這是我的應用程序中最重要的屏幕,我在做這項工作時非常茫然。我能做些什麼來加速這個過程?也許Obse​​rvableCollection是錯誤的選擇?

+3

研究「分頁」 –

+0

也許這會幫助嗎? http://stackoverflow.com/questions/697701/wpf-datagrid-performance –

+0

正如我所說的,客戶端不會去尋呼。關於該鏈接,我已經嘗試了回覆中列出的所有代碼修改建議,但我沒有看看性能工具包。我會給你一個機會,看看它是否有任何東西。 – drowned

回答

0

能否請您提供更多的見解......

  1. 你能檢查多少時間在「發電」的每5000行的5個集是花? (這是我假設你說的)

  2. 隨着virtulaization「on」什麼是UI後加載時間「之後」我們將集合分配給項目源?

  3. 如果僅在tabItem實際可見時纔將「ItemsSource」綁定到相應的數據網格,會發生什麼情況?

  4. 你datagrids有默認的排序成員路徑?分組?過濾路徑?

這些是我會針對這個問題開始的幾件事。

+0

1.當點擊標籤時,這些集合已經生成。這發生得非常快。 2. 30 - 60秒。我不知道,我現在就試試看。他們沒有排序,沒有分組,也沒有過濾。 – drowned

+0

和#3的更新...我將選項卡上的itemssource設置更改,並且在數據開始顯示前仍需要大約30秒,並且在UI完全解凍之前還有20或30秒 – drowned

相關問題