从字符串中获取SolidColorBrush

时间:2013-06-23 04:39:58

标签: c# windows-phone-8

我正在尝试使用字符串设置后端文本块的前景(类似“红色”)

我试过这个:

ColorText.Foreground = new BrushConverter().ConvertFromString(colors[color2].ToString());

但是,它似乎没有认出BrushConvert()。我已经包含System.Windows.Media,但仍然无法找到。

还有另一种方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:1)

Windows Phone中无法使用

BrushConverter。您可以构建一个颜色字典,然后使用辅助方法将您想要的颜色传递给SolidColorBrush ctor。

public static class ColorsHelper {
  private static readonly Dictionary<string, Color> dict =
        typeof(Colors).GetProperties(BindingFlags.Public | BindingFlags.Static)
        .Where(prop => prop.PropertyType == typeof(Color))
        .ToDictionary(prop => prop.Name, prop => (Color)prop.GetValue(null, null));

  public static Color FromName(string name) {
    return dict[name];
  }
}

ColorText.Foreground = new SolidColorBrush(ColorsHelper.FromName("Red"));

确保上面的字典使用System.Windows.Media.Color struct和System.Windows.Media.Colors类。我相信有一些Color类型,如果需要,可以在整个命名空间中键入或重命名。