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

前端之家收集整理的这篇文章主要介绍了如何将字符串转换为颜色?对于Windows Phone c#前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个用户控件,我将一个字符串绑定到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,以及名称的开关?这似乎不是最聪明的解决方

解决方法

我在网上看到的一个聪明的方法是通过创建一个表示< 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’s Tech Blog – ColorFromString for Silverlight or .NET

猜你在找的Windows相关文章