2009-05-06 123 views
3

是否存在與Grid Grid調整大小相關的WPF中的任何已知性能問題?WPF列大小調整性能問題

我有一個應用程序,我需要在列中做一些特定的事情,但對於所有不同的解決方案,我發現列大小變得緩慢。這適用於我的列表中通常有1000個以上的元素,但我認爲這對於WPF來說不算太多。所以;一般的問題是你是否經歷了緩慢的列大小調整,以及你是否找到了解決方案?是什麼導致了它?

關於我的具體情況更多的細節:

我可以在我的專欄兩個不同的東西;組合框或TextBlock。組合框應該填充整列,然後按列調整大小,然後單擊具有TextBlock的列的空白區域應選擇該行。這是問題所在。對於所有的解決方案,我必須調整列大小緩慢。調整大小順序的唯一方法是找到它,方法是在方向=「水平」方向外面添加一個StackPanel,但是我無法實現上述樣式。

這裏有一些意見:

  • 添加樣式Horizo​​ntalContentAlignment =「拉伸」到列表中的項目,使組合框延伸及的TextBlocks點擊,但也列調整緩慢。
  • 將Background =「Transparent」添加到StackPanel或插入到它們中的元素也解決了問題,但調整速度很慢。
  • 添加具有屬性Orientation =「Horizo​​ntal」的外部StackPanel使調整大小平滑,但我無法應用所述的樣式。
+1

我以前在我的應用程序中見過這個,但它不再發生,我不知道爲什麼。對不起,沒有信息,但至少你知道你並不瘋狂。你使用的是什麼版本的.NET框架。微軟聲稱在3.5和3.5 SP1中有很多性能改進。 – PeterAllenWebb 2009-05-06 13:58:42

回答

2

您是否嘗試過虛擬化ListView中的元素?虛擬化時,虛擬化面板僅爲視圖中的元素創建視覺效果。這可以讓您擁有大量的項目,而不會像您提到的那樣出現性能問題。有關更多詳細信息,請參閱VirtualizingStackPanel。還有The Layout System。您可以創建自己的虛擬化面板。如果你在谷歌上查找「virtualizing + wpf」,你會發現虛擬化Canvases,WrapPanels等很多點擊。

我希望這有助於。

+0

我們已經嘗試過早先對元素進行虛擬化。我不確定這是否解決了調整大小問題,但是在我們的列表中使用虛擬化滾動是一種糟糕的體驗(很慢!),所以我們無法使用它。我們的結論是,在簡單的測試應用程序中得到同樣的問題後,這在​​WPF中可能還不成熟。對此有何意見? – stiank81 2009-05-10 19:57:17