我需要将字符串转换为颜色,因为颜色会动态变为字符串。
错误说:
无法将字符串转换为Xamarin.Form.Color
string BackgroundColor = (string)testData["Views"][index][name][i]["BackgroundColor"];
gridLayout.BackgroundColor = BackgroundColor;//Error
答案 0 :(得分:4)
您可以使用Xamarin.Forms.ColorTypeConverter。
此方法: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"));
答案 1 :(得分:3)
我认为你的字符串是你想要应用的颜色的十六进制值。如果是这样,您必须将其解析为颜色。 .setBackground
方法和BackgroundColor
属性接受颜色对象。
要解析它,请使用包含Color
方法的FromHex
类。
Color.FromHex("#FFF");
答案 2 :(得分:0)
您可以使用ColorTypeConverter
将字符串转换为颜色var converter = new ColorTypeConverter ();
gridLayout.BackgroundColor = converter.ConvertFrom ("Color.Blue");
gridLayout.BackgroundColor = converter.ConvertFrom ("Blue");
gridLayout.BackgroundColor = converter.ConvertFrom ("#0000ff");
希望这有帮助