I was wondering how do you decide when to use converters
and when to use triggers
. I prefer using triggers for operations on GUI (like showing/hiding controls, changing their appearance etc.).
Some time ago I used a BooleanToVisibilityConverter
for this purpose but now, I just don't need it, I do all things connected to the visibility
using a triggers and I even started to think "what was the purpose of creating a BooleanToVisibilityConverter
by the MS team?". Generally, when it's possible I try to use a declarative way to write the code - in this example - XAML.
What is your opinion of that?
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 performOneWay
operations whereasConverters
can performTwoWay
operations
In my opinion, you are looking from bottom-up and you just need to look top-down.
Triggers-When a specified condition is fulfilled it "triggers" an execution
Converters-Convert between two incompatible types.
Why do we need a boolean datatype when we can do the same functionality with intergers?
In addition to what has been said above I can only add:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With