如何在Windows Universal App中创建通用的EnumConverter

时间:2014-08-08 06:02:28

标签: c# windows-runtime winrt-xaml windows-8.1 win-universal-app

我有一个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不可用。

如果有人能指出我正确的方向,我会很高兴。

提前致谢。

1 个答案:

答案 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();
}