WPF XAML - DataTriggers或ValueConverters?最佳实践

时间:2014-07-07 10:02:07

标签: c# wpf xaml datatrigger valueconverter

我有一个TextBlock的窗口。这个TextBlock必须显示价值" R"如果绑定值为0或" M"如果绑定值为1。

我有两种可能性:

ValueConverter方法

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

其中valConverterIValueConverter类返回&#34; M&#34;或&#34; R&#34;如果该值分别为0或1。

[omitted class]

DataTrigger方法

<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>

根据你的说法,最好的方法是什么?

2 个答案:

答案 0 :(得分:4)

在大多数情况下,触发器可以执行与任何转换器相同的工作,但Converters可以具有自定义/业务逻辑。

Triggers的一个限制是DataTriggers中的Setters只能更改UI元素的属性;因此,您无法使用触发器更新ViewModels媒体资源,其中Converters获胜,请记住ConvertBack方法。

因此,简而言之Triggers只能执行OneWay次操作,而Converters可以执行TwoWay次操作

答案 1 :(得分:2)

转换器在这种情况下是最好的。正如名称所示转换器转换类型。在这种情况下,您希望将int转换为Char,因此转换器非常适合。更多信息:ConverterPerformance