【问题标题】:How to create a generic EnumConverter in Windows Universal App如何在 Windows 通用应用程序中创建通用 EnumConverter
【发布时间】:2014-08-08 14:15:40
【问题描述】:

我有一个 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”而不是 Enum 类型,因此转换失败。

我已经查看了this answer 并尝试遵循这两个选项。 Option-A 不起作用,因为 targettype 是 System.Object 而不是我的 Enum

选项-B 不起作用,因为 WinRt-Xaml 没有 x:Type 可以在转换器参数中给出。

EnumConverter from Microsoft 不可用。

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

提前致谢。

【问题讨论】:

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


    【解决方案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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-15
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多