WPF XAML - DataTriggers or ValueConverters? Best practice
Asked Answered
W

2

1

I have a Window with a TextBlock. This TextBlock has to show the value "R" if the binded value is 0 or "M" if the binded value is 1.

I have two possibilities:

ValueConverter approach

<TextBlock Binding="{Binding Path=Value, Converter={StaticResource valConverter}}"/>

Where valConverter is an IValueConverter class that returns "M" or "R" if the value is respectively 0 or 1.

[omitted class]

DataTrigger approach

<TextBlock>
    <TextBlock.Style>
        <Style>
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=Value}" Value="0">
                    <Setter Property="TextBlock.Text" Value="R"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding Path=Value}" Value="1">
                    <Setter Property="TextBlock.Text" Value="M"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

According to you, what is the best approach?

Wawro answered 7/7, 2014 at 10:2 Comment(2)
possible duplicate of WPF triggers VS ConverterNisse
possible duplicate of Should I use WPF converter or trigger?Cyclostome
G
2

Converters are Best in this scenario. As the name indicates converter converts the type. In this case you want to convert int to Char, so converters are much suitable. For More Info : ConverterPerformance

Gesellschaft answered 7/7, 2014 at 10:4 Comment(0)
E
4

In most of the scenarios triggers can perform the same work as any converter but Converters can have custom/business logic.

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, that's where Converters win, remember the ConvertBack method.

So in short Triggers can only perform OneWay operations whereas Converters can perform TwoWay operations

Eellike answered 7/7, 2014 at 10:7 Comment(1)
If you copy an answer from earlier question then pls. provide a link to original question, will be more helpful for everyone. https://mcmap.net/q/725005/-should-i-use-wpf-converter-or-triggerCyclostome
G
2

Converters are Best in this scenario. As the name indicates converter converts the type. In this case you want to convert int to Char, so converters are much suitable. For More Info : ConverterPerformance

Gesellschaft answered 7/7, 2014 at 10:4 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.