假设我有一些枚举,例如:
enum MyEnum { value1, value2 }
和价值转换器:
[ValueConversion(typeof(MyEnum), typeof(string))]
class MyEnumToString : IValueConverter
{
...
}
现在我要打印使用MyEnum
转换的两个MyEnumToString
值:
<Window.Resources>
<converters:MyEnumToString x:Key="myEnumToString"/>
</Window.Resources>
...
<TextBlock Text="{here I want to print value1 converted by myEnumToString}"/>
<TextBlock Text="{here I want to print value2 converted by myEnumToString}"/>
我该怎么做?请注意,此处没有数据绑定,只有两个值。
答案 0 :(得分:1)
Converter
与 Binding
一起使用,引自MSDN
:
IValueConverter:
提供了一种将自定义逻辑应用于Binding
的方法。如果要将值转换器与
Binding
关联,请创建一个实现IValueConverter
接口的类,然后实现Convert和ConvertBack方法。
因此,你需要写下这个:
<TextBlock Text="{Binding Path=value1, Converter={StaticResource myEnumToString}}" ... />
如果此值位于ItemSource
或根控制定义为DataContext
,请尝试以下操作:
<TextBlock Text="{Binding Converter={StaticResource myEnumToString}}" ... />
要么像这样:
<TextBlock Text="{Binding Path=., Converter={StaticResource myEnumToString}}" ... />
在这种情况下,Text="{Binding Path=.}"
相当于Text="{Binding}"
。
答案 1 :(得分:0)
像Anatoliy所说,你不能使用没有绑定的转换器。
这就是为什么在更新绑定数据时使用转换器转换绑定数据的原因。