2013-10-19 126 views
7

哪個更好地使用性能? 轉換器的限制與觸發器相反,反之亦然。 我應該限制轉換器的使用,因爲它會導致類爆炸?WPF觸發VS轉換器

回答

0

對於相似類型的輸出,與Converter相比,Triggers的性能更好。 雖然,conveters是可取的,你希望你的開發是TDD,因爲你可以爲你的轉換器代碼編寫單元測試。 Converters可用於編寫複雜的轉換,有時不可能使用觸發器。 對於複雜轉換Converters可以減少代碼而不是編寫Triggers系列。

5

如果您正在進行TDD開發,那麼使用轉換器將是更好的選擇。

如果沒有複雜的業務邏輯或自定義邏輯要應用,那麼去觸發器。關於轉換器還有一件事是,按照Laurent Bugnion(MVVM Light的創建者)的說法,使用轉換器會導致性能下降。

你可以從這篇文章中看到更多關於性能命中的見解。 DataTrigger vs databinding with converter performance wise

您可以從這篇文章中獲得更多關於何時使用觸發器以及何時使用轉換器的詳細信息。 Should I use WPF converter or trigger?

該決定可以基於您正在遵循或將遵循的開發方法進行。大多數情況下,我更願意在「WPF Viewmodel」概念中包裝視圖模型。

0

在大多數場景中,觸發器可以執行與任何轉換器相同的工作,但轉換器可以具有自定義/業務邏輯。

觸發器的一個限制是DataTriggers中的Setters只能改變UI元素的屬性;因此,您無法使用觸發器更新您的ViewModels屬性,即轉換器獲勝的地方,請記住ConvertBack方法。

總之觸發器

所以只能進行單向操作,而轉換器可以進行雙向操作

+4

這是*有趣*該怎麼回答幾乎完全一樣[這個其他(http://stackoverflow.com/a/ 11156189/540776) – superjos

+3

哇,它已經出現在這裏:http://stackoverflow.com/questions/24607952/wpf-xaml-datatriggers-or-valueconverters-best-practice –