我需要将字符串转换为颜色,因为颜色以字符串形式动态传递。
错误信息:
无法隐式转换字符串为Xamarin.Form.Color
string BackgroundColor = (string)testData["Views"][index][name][i]["BackgroundColor"];
gridLayout.BackgroundColor = BackgroundColor;//Error
我需要将字符串转换为颜色,因为颜色以字符串形式动态传递。
错误信息:
无法隐式转换字符串为Xamarin.Form.Color
string BackgroundColor = (string)testData["Views"][index][name][i]["BackgroundColor"];
gridLayout.BackgroundColor = BackgroundColor;//Error
我猜你的字符串是你想要应用的颜色的十六进制值。如果是这样,你必须将它解析为一种颜色。 .setBackground
方法和 BackgroundColor
属性接受一种颜色对象。
要解析它,使用包含 FromHex
方法的 Color
类。
Color.FromHex("#FFF");
ConvertFrom
来自链接的例子:var converter = new ColorTypeConverter ();
Assert.True (converter.CanConvertFrom (typeof(string)));
Assert.AreEqual (Color.Blue, converter.ConvertFrom ("Color.Blue"));
Assert.AreEqual (Color.Blue, converter.ConvertFrom ("Blue"));
Assert.AreEqual (Color.Blue, converter.ConvertFrom ("#0000ff"));
Assert.AreEqual (Color.Default, converter.ConvertFrom ("Color.Default"));
Assert.AreEqual (Color.Accent, converter.ConvertFrom ("Accent"));
var hotpink = Color.FromHex ("#FF69B4");
Color.Accent = hotpink;
Assert.AreEqual (Color.Accent, converter.ConvertFrom ("Accent"));
您可以使用ColorTypeConverter将字符串转换为颜色
var converter = new ColorTypeConverter ();
gridLayout.BackgroundColor = converter.ConvertFrom ("Color.Blue");
gridLayout.BackgroundColor = converter.ConvertFrom ("Blue");
gridLayout.BackgroundColor = converter.ConvertFrom ("#0000ff");
#ffff00
这样的HTML样式值,还是像“绿色”这样的颜色名称,甚至是一些其他奇怪的文本。 - DavidG