Dot-Net

我應該使用 WPF 轉換器還是觸發器?

  • January 18, 2018

我想知道您如何決定何時使用converters和何時使用triggers. 我更喜歡在 GUI 上使用觸發器進行操作(例如顯示/隱藏控制項、更改它們的外觀等)。

前段時間我BooleanToVisibilityConverter為此目的使用了 a,但現在,我只是不需要它,我做所有與visibility使用觸發器相關的事情,我什至開始思考“ MS 團隊**創建 a 的目的是什麼?” BooleanToVisibilityConverter. 通常,如果可能,我會嘗試使用聲明性方式來編寫程式碼 - 在本例中 - XAML。

你對此有何看法?

我同意你的看法,我也嘗試在 XAML 中使用聲明性程式碼,並且更喜歡Triggers而不是Converters.

在大多數情況下,觸發器可以執行與任何轉換器相同的工作,但Converters可以具有 pcajer 提到的自定義/業務邏輯。

一個限制Triggers您的 SetterDataTriggers只能更改您的 UI 元素的屬性;所以,你不能用 triggers 更新你的 ViewModels 屬性,這就是Converters勝利,記住ConvertBack方法。

因此,您可以使用控制項將您的 VM 屬性與控制項綁定VisibilityBooleanToVisibilityConverter即使您的控制項visibility被其他方式更改,您的 VM 屬性也會得到更新;通常不需要這就是為什麼BooleanToVisibilityConverter被觸發器取代的原因。

簡而言之——

Triggers只能執行OneWay操作而Converters可以執行TwoWay操作

引用自:https://stackoverflow.com/questions/11152313