Silverlight – Get Color from Hex

What if you want to get a Color from its hexa value (#FFBBCC88) ?

Unfortunately Silverlight do not have the ColorTranslator class which allows you to do ColorTranslator.FromHtml(“#FF1133”) in ASP.NET.

What we have is the Color.FromArgb() method which takes 4 parameters (alpha, red, blue and green channels as bytes).
So here is a small method you could write:

public static SolidColorBrush GetColorFromHexa(string hexaColor)
{
    return new SolidColorBrush(
        Color.FromArgb(
            Convert.ToByte(hexaColor.Substring(1, 2), 16),
            Convert.ToByte(hexaColor.Substring(3, 2), 16),
            Convert.ToByte(hexaColor.Substring(5, 2), 16),
            Convert.ToByte(hexaColor.Substring(7, 2), 16)
        )
    );
}

Let’s say I want to set the main Canvas Background (LayoutRoot) from a TextBox (txtColorHexa):

LayoutRoot.Background = GetColorFromHexa(txtColorHexa.Text);


Now add the following Extension method:

public static SolidColorBrush ToSolidColorBrush(this string hexaColor)
{
    return GetColorFromHexa(hexaColor);
}

And you get this nice syntax:

LayoutRoot.Background = txtColorHexa.Text.ToSolidColorBrush();