如何将字符串转换为颜色?

时间:2017-12-19 10:19:17

标签: c# xamarin.forms

我需要将字符串转换为颜色,因为颜色会动态变为字符串。

错误说:

  

无法将字符串转换为Xamarin.Form.Color

string BackgroundColor = (string)testData["Views"][index][name][i]["BackgroundColor"];

gridLayout.BackgroundColor = BackgroundColor;//Error

3 个答案:

答案 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");

希望这有帮助