我有这条线,它有效,但我怎么能返回一个custum颜色字符串,例如"#2228D4"
return (Boolean)value ? new SolidColorBrush(Colors.Red) : new SolidColorBrush(Colors.Yellow);
它是Windows Phone 8应用程序,因此我无法使用WPF ColorConverter
。
答案 0 :(得分:3)
您可以使用以下方法将ColorString(十六进制代码)转换为Color对象。
public Color ConvertStringToColor(String hex)
{
//remove the # at the front
hex = hex.Replace("#", "");
byte a = 255;
byte r = 255;
byte g = 255;
byte b = 255;
int start = 0;
//handle ARGB strings (8 characters long)
if (hex.Length == 8)
{
a = byte.Parse(hex.Substring(0, 2), System.Globalization.NumberStyles.HexNumber);
start = 2;
}
//convert RGB characters to bytes
r = byte.Parse(hex.Substring(start, 2), System.Globalization.NumberStyles.HexNumber);
g = byte.Parse(hex.Substring(start + 2, 2), System.Globalization.NumberStyles.HexNumber);
b = byte.Parse(hex.Substring(start + 4, 2), System.Globalization.NumberStyles.HexNumber);
return Color.FromArgb(a, r, g, b);
}
您可以使用以下代码返回画笔
(Boolean)value ? new SolidColorBrush(ConvertStringToColor("FFFF0000")) : new SolidColorBrush(ConvertStringToColor("FF00FF00"));
答案 1 :(得分:0)
当您在手机上时,您无法访问BrushConverter。通过打破六角形并将其分配给每个组件来实现:
var color = new Color() {R = 0x22, G = 0x28, B = 0xD4};
var brush = new SolidColorBrush(color);
显然,保持对画笔的引用而不是一遍又一遍地重新创建:)