2011-03-25 46 views
0

我綁定一個DataGrid到動態數據集(db表查找數據)WPF DataGrid的性能和選擇性呈現

這在大多數情況下,罰款,接受時,列存儲設置一個較大的信息。一個這樣的例子是XML類型的列,它存儲了一個相當大的XML配置數據片段。

在這種情況下,即使列寬度/高度被限制爲僅顯示該單元格中的前300個字符的數據,網格也會減慢到爬行。

所以它看起來像網格呈現單元格中的所有數據,而不僅僅是可見部分。

有沒有辦法將DataGrid配置爲僅以通用的方式渲染這些單元格的子部分(因爲我無法預測哪些列需要這樣做)?

回答

0

嘗試在ScrollViewer中包裝您的單元格的內容,或者啓用虛擬化但已禁用滾動條的內容。

另一種方法是隻返回數據源

+0

試過了,謝謝。沒有不同。 – 2011-03-25 14:43:43

+0

@Sonic Soul你確定它是導致問題而不是數據庫調用的渲染嗎? – Rachel 2011-03-25 14:48:38

+0

是的,我確定。當該列被填充時,整個網格是昏睡的。緩慢不在數據檢索期間。 – 2011-03-25 16:42:26

1

這可能是不相關的,但我有各種與DataGrid問題中採取字面上秒的窗口調整大小後刷新,列的第300個字符排序等,並鎖定了窗口UI(1000行,5列)。

它回到了一個問題(錯誤?)與WPF大小計算。我把它放在一個RowDefinition Height =「Auto」的網格中,通過測量每一列和每一行的大小,導致渲染系統試圖在運行時重新計算DataGrid的大小,大概是通過填充整個網格據我所知)。它應該以某種方式智能處理,但在這種情況下不是。

快速檢查這是否是相關問題,是在測試期間將DataGrid的高度和寬度屬性設置爲固定大小,然後再次運行。一旦恢復性能,永久修復可以是這些選項中選擇:

  • 變化的含元件的尺寸可相(*)或 固定值
  • 集MaxHeight和數據網格到的MaxWidth固定值大 比它可能在正常使用
  • 嘗試用不同的大小調整戰略的另一個容器類型(電網,DockPanel中,等)獲得