I agree with you, I also try to use declarative code in XAML and prefer Triggers
instead of Converters
.
In most of the scenarios triggers can perform the same work as any converter but Converters
can have custom/business logic as pchajer mentioned.
One limitation of Triggers
is that Setters in your DataTriggers
can only change properties of your UI elements; so, you can't update your ViewModels property with triggers, thats where Converters
win, remember the ConvertBack
method.
So, you can bind your VM property with a controls Visibility
using BooleanToVisibilityConverter
and even if your controls visibility
is changed by some other means your VM property will get updated;
generally it's not required that's why BooleanToVisibilityConverter
gets replaced by triggers.
So in short -
Triggers
can only perform OneWay
operations whereas Converters
can perform TwoWay
operations
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…