1

Windows Phone(或 Silverlight)中没有 System.Windows.Media.ColorConverter,所以我需要另一种方法来获取包含颜色名称的字符串,例如“Red”并从中生成 Color 对象。

我发现了这种可能性,但它不起作用,因为 colorType.GetProperty 总是返回 null。

public static Color ConvertFromString(string colorString)
{
    Color retval = Colors.Transparent;

    Type colorType = (typeof(Colors));

    if (colorType.GetProperty(colorString) != null)
    {
        object o = colorType.InvokeMember(colorString,
            BindingFlags.GetProperty, null, null, null); 

        if (o != null)
        {
            retval =  (Color)o;
        }
    }

    return retval;
}

有任何想法吗?

4

2 回答 2

2

没有在 WP 上尝试过,但在 SL 中,您可以为此劫持 XAML(SolidColorBrush以及其他等):

    private Color StringToColor(string colorName)
    {
        string xaml = string.Format("<Color xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">{0}</Color>", colorName);
        try { return (Color)XamlReader.Load(xaml); }
        catch { return Colors.Transparent; }
    }
于 2013-05-29T21:12:18.880 回答
2

尝试这个 :

public static Color GetColor(String ColorName)
{
    Type colors = typeof(System.Windows.Media.Colors);
    foreach(var prop in colors.GetProperties())
    {
        if(prop.Name == ColorName)
            return ((System.Windows.Media.Color)prop.GetValue(null, null));
    }

    throw new Exception("No color found");
}
于 2013-05-29T20:33:54.130 回答