¿Cómo convertir una cadena en un Color? Para el teléfono con Windows c#



string xaml (1)

Una manera ingeniosa que vi en la red para lograr esto es creando una cadena que represente el marcado XAML para <Color> luego use XamlReader para convertir la cadena XAML en un objeto Color real:

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;
}

Ejemplo de uso:

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

Nota: El método de fuente de StringToColor() se puede encontrar en el comentario de George a esta entrada del blog: Blog de tecnología de Jim McCurdy - ColorFromString para Silverlight o .NET

Tengo un control de usuario donde he vinculado una cadena a la ruta xaml. Esto me permite elegir colores como "Negro", "Azul" y también usar números hexa como una cadena para elegir el color.

Pero no puedo usar la misma cadena en el código C #. Que se muestra en el siguiente ejemplo:

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

Así que la última cadena shieldGearModelRec.Gear.Color es lo que uso como un enlace en XAML. Y puede convertir cadenas para colorear en nombres de color o hexa descripción. Pero, ¿cómo puedo hacer esto en el código que está detrás, eso está en c #?

Mis búsquedas encontraron cosas como Convertir cadena a Color en C #, pero esto no fue posible en Windows Phone. ¿Hay alguna forma de lograr esto?

Una idea

¿Necesito crear un convertidor que lea la cadena, busque # para determinar si es hexa o un nombre de color y luego usar un convertidor hexa para encontrar rgb, y un interruptor para los nombres? Esto no parece ser la solución más inteligente





colors