2011-04-01 31 views
15

我有大量的樣式爲我的網格定義(基於狀態的單元格顏色等)。現在我使用DataTriggers來設置適當的顏色。我正在尋求改進我的應用程序的性能,並認爲大量的樣式可能會導致速度減慢(由於數據不斷變化,樣式需要重新計算/刷新)。使用轉換器而不是DataTriggers進行數據綁定會更好嗎?DataTrigger與數據綁定與轉換器性能明智

如果可以用任何一種方法實現目標,是否有任何性能差異?我不熟悉幕後發生的事情,所以我不能確定。

回答

13

this episode of the Hanselminutes podcast,客戶Laurent Bugnion(MVVM Light的創建者)介紹說,使用轉換器會帶來性能上的下降。他表示,在桌面應用程序中它幾乎總是微不足道,但在WP7應用程序中,建議視圖模型直接暴露諸如畫筆之類的東西,而不是嚴重依賴轉換器,尤其是在處理列表虛擬化時,在這種情況下,滾動會導致很多轉換的調用。

在您的場景中發生類似的事情是可能的,只要給出觸發器的數量(或者如果您進行了該轉換,就會進行轉換)。作爲一個概念證明,你可能會考慮將你的視圖模型包裝在一個「WPF視圖模型」中,該視圖模型本身公開了顏色和其他WPF特定的值,而不是某些值,顏色可以由運行時調用觸發器和IValueConverters。然後你就可以直接綁定到那個,既不使用觸發器也不使用轉換器。我有興趣聽到結果。