2011-09-02 65 views
3

我們遇到了WPF數據網格的滾動問題。通過一些分析發現ScrollViewer.CanContentScroll = true是罪魁禍首。刪除並使其失效,滾動問題得到修復。但昨天我分析了一個錯誤,即由於錯誤地綁定了5萬條記錄,WPF應用程序的內存佔用量增加到超過1.3Gb。它仍然質疑即使是10k條記錄的綁定能力。用戶不想分頁。 (它的一個要求,不能做太多的工作!)DataGrid滾動問題修復導致性能和內存問題

在進一步的讀者發現設置ScrollViewer.CanContentScroll = false使UI虛擬化爲假。這是使WPF綁定所有記錄並將其呈現在屏幕上。這導致記憶足跡和性能問題爆發。

現在我們認爲如果要綁定的記錄最小,那麼設置ScrollViewer.CanContentScroll = false,否則將其設置爲true。

簡而言之:我們要麼停留在滾動問題或UI虛擬化上。有什麼可以解決這兩個問題嗎?已閱讀關於數據虛擬化的內容,但我們是否真的需要這麼做?我是否可以從.net4.0中找到任何可以幫助我們的東西?

回答

2

如果您查看this question的接受答案...在答案的「選擇它們之間」部分有一個建議的提示,將項目不在視圖中時自定義裝飾器的可見性設置爲隱藏。

但除此之外...你是對的。你要麼順利滾動,要麼虛擬化...不是兩個。

此外,如果你在你的數據網格中分組項目,檢查出this answer我發佈了一段時間,爲了方便的性能改進。

+0

謝謝斯科特,我會嘗試任何一個選項,並會在這裏更新! – ioWint