2012-07-07 80 views
3

我正在使用.NET 4 WPF DataGrid,並且在使用大量列時注意到很差的垂直滾動性能。這裏是我做過什麼來測試這個:WPF .NET 4 DataGrid列性能

  1. 啓用虛擬化(VirtualizingStackPanel.IsVirtualizing =「真」 VirtualizingStackPanel.VirtualizationMode =「回收」)
  2. 嵌入在DataGrid中簡單的網格佈局,也沒有其他控件在這個窗口
  3. 列沒有自定義格式,沒有圖像 - 只是簡單的文字
  4. 我在一臺相當不錯的電腦上運行。 WIN7(64位)與8GB的內存和Radeon 7800系列卡
  5. 測試與穿孔不顯示什麼不好之類的軟件渲染四核心3.2gz等

下面是一些結果:

  • 100行×5周的cols:平滑滾動
  • 100,000行×5周的cols:平滑滾動
  • 100行×75個COLS:滾動性能很差
  • 1 00,000行×75列:完全凍結

當我有大量列(〜75-100)時,我該如何改進垂直滾動性能?

感謝

+0

75列是否有意義,即使它工作完美無瑕?我建議默認情況下只使用重要的列,並在網格側面顯示按字母順序排列的可選列作爲複選框,可以根據用戶的要求顯示。 – doblak 2012-07-07 23:16:14

回答

5

你缺少兩個非常重要的特性:

同時啓用它們,看看如果這有所作爲。它應該有所幫助。

我有大約20左右的列約2500行,我沒有看到性能問題,但它的75列絕對看起來像很多。您可能想要調查在標題中添加右鍵單擊啓用/禁用列(類似於excel)。

+0

謝謝。這兩個屬性幫助了很多。禁用virtualizingstackpanel並啓用這兩個屬性會產生很大的差異。我現在可以管理75列x 10,000行。我的應用程序是一款類似於應用程序的應用程序,用戶通常從總共300個列中選擇75列至150列。它們將應用程序擴展到多個顯示器。因此,這個例子實際上是一個真實的生活場景。此更改現在可用於最多90列。想知道是否有辦法讓它工作到150.謝謝你的幫助 – Rhino 2012-07-08 07:47:16

+0

@Rhino,我有同樣的情況,你的意思是解決方法是EnableColumnVirtualization =「True」EnableRowVirtualization =「True」VirtualizingStackPanel.IsVirtualizing =「假「?在我的情況下,它幾乎停止,非常緩慢的滾動 – 2012-10-19 11:48:12

+0

感謝@ daub815的迴應,但你的意思是「關閉面板的堆棧面板虛擬化」?你的意思是改變itempanel到stackpanel期望的虛擬onr? – 2012-10-20 14:14:37