如何将字符串转换为Color? 对于Windows Phone的C#



string xaml (1)

我在网上看到的一个聪明的方法是通过创建一个表示<Color> XAML标记的字符串,然后使用XamlReader将XAML字符串转换为实际的Color对象:

private static bool StringToColor(string strColor, out Color color)
{
    string xaml = string.Format("<Color xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">{0}</Color>", strColor);
    try
    {
        object obj = XamlReader.Load(xaml);
        if (obj != null && obj is Color)
        {
            color = (Color)obj;
            return true;
        }
    }
    catch (Exception)
    {
        //Swallow useless exception
    }
    color = new Color();
    return false;
}

使用示例:

Color newColor = new Color(); 
StringToColor(shieldGearModelRec.Gear.Color,out newColor); 
mySolidColorBrush.Color = newColor;

注意: StringToColor()方法的来源可以在George对这篇博客的评论中找到: Jim McCurdy的Tech Blog - 用于Silverlight或.NET的ColorFromString

https://code.i-harness.com

我有一个用户控件,我已经绑定了一个字符串到xaml路径。 这使我可以选择像“黑色”“蓝色”的颜色,也可以使用六个数字作为字符串来选择颜色。

但是我不能在C#代码中使用相同的字符串。 以下示例显示了这一点:

SolidColorBrush blackBrush = new SolidColorBrush();
SolidColorBrush mySolidColorBrush = new SolidColorBrush();
mySolidColorBrush.Color = shieldGearModelRec.Gear.Color;

所以最后一个字符串shieldGearModelRec.Gear.Color是我在XAML中用作绑定的。 它可以将字符串转换为颜色名称或hexa描述的颜色。 但我怎么能在代码背后,这是在C#中做到这一点?

我的搜索发现像在C#中的字符串转换为颜色的东西但这是不可能在Windows手机。 有没有办法做到这一点?

一个主意

我是否需要创建一个读取字符串的转换器,查找#以确定它是六进制还是颜色名称,然后使用六进制转换器查找rgb以及名称的开关? 这似乎不是最聪明的解决方案





colors