我有一个Windows通用应用程序,我需要在其中创建一个通用的枚举转换器。
这是我第一次看到我试图创建的转换器。
public class EnumConverter : IValueConverter
{
public object Convert(object value, System.Type targetType, object parameter, string language)
{
return System.Enum.GetName(targetType, value);
}
public object ConvertBack(object value, System.Type targetType, object parameter, string language)
{
return System.Enum.Parse(targetType, value as string, false);
}
}
然而,目标类型是" System.Object"而不是枚举类型,因此转换失败。
我已经查看了this answer,并尝试按照这两个选项进行操作。 Option-A不起作用,因为targettype是System.Object而不是我的Enum
选项-B不起作用,因为WinRt-Xaml没有x:要在转换器参数中输入类型。
EnumConverter from Microsoft不可用。
如果有人能指出我正确的方向,我会很高兴。
提前致谢。
答案 0 :(得分:1)
targetType
参数定义了一个类型,value
正在转换为该类型。如果要获取枚举类型,则必须使用value.GetType
:
public object Convert(object value, System.Type targetType, object parameter, string language)
{
return Enum.GetName(value.GetType(), value);
}
但这有一个简单的方法:
public object Convert(object value, System.Type targetType, object parameter, string language)
{
return value.ToString();
}