使用值转换器打印枚举值,无需数据绑定

时间:2014-03-19 08:13:06

标签: wpf ivalueconverter

假设我有一些枚举,例如:

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}"/>

我该怎么做?请注意,此处没有数据绑定,只有两个值。

2 个答案:

答案 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所说,你不能使用没有绑定的转换器。

这就是为什么在更新绑定数据时使用转换器转换绑定数据的原因。