Новый и лучший ответ
Конечно, ColorConverter - это путь. Вызовите ColorConverter.ConvertFromString и приведите результат. Правда это будет связано с боксом. Если вы хотите избежать бокса, создайте словарь для начала для стандартных имен (все еще используя ColorConverter), а затем используйте словарь для последующих поисков.
Оригинальный ответ
Вы можете довольно легко получить имена и значения свойств из System.Windows.Media.Colors один раз на карту:
private static readonly Dictionary<string, Color> KnownColors = FetchColors();
public static Color FromName(string name)
{
return KnownColors[name];
}
private static Dictionary<string, Color> FetchColors()
{
// This could be simplified with LINQ.
Dictionary<string, Color> ret = new Dictionary<string, Color>();
foreach (PropertyInfo property in typeof(Colors).GetProperties())
{
ret[property.Name] = (Color) property.GetValue(null);
}
return ret;
}
Это немного некрасиво, но это одноразовый хит.