2010-09-14 58 views
1

當談到組合框時,我的WPF應用程序在高分辨率方面有點慢。我很確定它在ComboBoxes上的BitmapEffects,特別是ItemsPanel上的DropShadow-Effect。WPF:禁用組合框的DropShadow/BitmapEffects

如何禁用它或完全刪除ComboBoxes及其子項上的所有位圖效果?

+0

也許我很挑剔,但從MSDN:在.NET Framework 4或更高版本中,BitmapEffect類已過時。如果你嘗試使用BitmapEffect類,你會得到一個過時的異常。 BitmapEffect類的非過時替代方法是Effect類;在大多數情況下,效果類顯着更快。所以它不是BitmapEffect:P – 2010-09-14 17:29:08

+0

我們正在開發.NET 3.5。切換到4.0並沒有顯着提高性能。 – Falcon 2010-09-15 07:17:52

回答

3

您可以嘗試更改ComboBoxControlTemplate。不過,我會建議首先進行簡介,然後再花費大量的時間優化你只能懷疑速度慢的事情。

微軟profiling tools是非常強大的配置WPF圖形用戶界面。

我還沒有看過,但我不認爲MS在ControlTemplates中使用BitmapEffects。不過,我已經看到使用DropShadowEffect(這不是BitmapEffect)的情況對性能造成了非常不利的影響:其中的更新已將整個屏幕的內容標記爲無效。使用performance profiling tools的穿孔器,您可以快速找到並解決這些問題。

+0

性能工具根本沒有幫助。 Perforator和Visual Profiler都無法幫助找到瓶頸。 – Falcon 2010-09-15 08:16:52

+0

從我可以告訴它的ItemPresenter的PopupAnimation,使應用程序看起來很慢,應用程序似乎沒有動畫運行好一點。在Visual Profiler中打開組合框時的峯值被分類爲「未標記時間」,因此您無法分辨出問題所在。 – Falcon 2010-09-15 08:19:04

+0

我在一臺客戶端環境中遇到類似的問題,該客戶端的機器具有禁用的hw-rendering功能。看到這篇文章:http://stackoverflow.com/questions/2939128/how-to-know-if-a-graphics-card-provides-hardware-rendering-for-wpf。我不知道你所檢查的是什麼,但正如我已經寫過的,看看無效矩形。我在DropShadowEffect中遇到了另一個應用程序性能問題,這是由於此效應中的一個錯誤導致了一個巨大的無效矩形。 – HCL 2010-09-15 08:30:56