如何将字符串转换为颜色?对于Windows Phone c#

时间:2014-09-13 21:38:29

标签: c# string xaml windows-phone-8 colors

我有一个用户控件,我将一个字符串绑定到xaml路径。这使我可以选择“黑色”“蓝色”等颜色,并使用六角数作为字符串来选择颜色。

但是我无法在C#代码中使用相同的字符串。如下例所示:

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

所以最后一个字符串shieldGearModelRec.Gear.Color是我在XAML中用作绑定的。它可以将颜色名称或六角形描述转换为颜色。但是如何在后面的代码中执行此操作,即在c#?

我的搜索结果如下 Convert string to Color in C#但这在Windows手机中无法实现。无论如何要实现这个目标吗?

想法

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

1 个答案:

答案 0 :(得分:3)

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

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()方法的来源可以在乔治对此博客文章的评论中找到:Jim McCurdy's Tech Blog - ColorFromString for Silverlight or .NET