我有一个TextBlock
的窗口。这个TextBlock
必须显示价值" R"如果绑定值为0或" M"如果绑定值为1。
我有两种可能性:
ValueConverter方法
<TextBlock Binding="{Binding Path=Value, Converter={StaticResource valConverter}}"/>
其中valConverter
是IValueConverter
类返回&#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>
根据你的说法,最好的方法是什么?
答案 0 :(得分:4)
在大多数情况下,触发器可以执行与任何转换器相同的工作,但Converters
可以具有自定义/业务逻辑。
Triggers
的一个限制是DataTriggers
中的Setters只能更改UI元素的属性;因此,您无法使用触发器更新ViewModels
媒体资源,其中Converters
获胜,请记住ConvertBack
方法。
因此,简而言之Triggers
只能执行OneWay
次操作,而Converters
可以执行TwoWay
次操作
答案 1 :(得分:2)
转换器在这种情况下是最好的。正如名称所示转换器转换类型。在这种情况下,您希望将int转换为Char,因此转换器非常适合。更多信息:ConverterPerformance