Cambio de color de un control silverlight utilizando parámetros
lunes, 27 de abril de 2009
Si se quiere parametrizar los colores de nuestros controles Silverlight2, recibiendo los valores exadecimales por parámetro deberiamos seguir los siguientes pasos:
- Pasar el valor del color como parámetro como una cadena de texto
- Convertir esta cadena de texto en un color
- Asignar el nuevo color al control
Pasar el valor del color como parámetro como una cadena de texto y recogerlo
if (initParams.ContainsKey("ColorFondo")) {
ChangeBackgroudColor(initParams["ColorFondo"]);
}
Asignar el nuevo color al control
private void ChangeBackgroudColor(string colorHexadecimal) {
Color cc = HexStringToColor(colorHexadecimal);
this.contenedor.SetValue(Canvas.BackgroundProperty, new SolidColorBrush(cc));
}
Convertir esta cadena de texto en un color
///
/// Extract only the hex digits from a string.
///
public static string ExtractHexDigits(string input) {
// remove any characters that are not digits (like #)
Regex isHexDigit = new Regex("[abcdefABCDEF\\d]+");
string newnum = "";
foreach (char c in input) {
if (isHexDigit.IsMatch(c.ToString()))
newnum += c.ToString();
}
return newnum;
}
///
/// Convert a hex string to a .NET Color object.
///
/// a hex string: "FFFFFF", "#000000"
public static Color HexStringToColor(string hexColor) {
string hc = ExtractHexDigits(hexColor);
if (hc.Length != 6) {
return Colors.Transparent;
}
string r = hc.Substring(0, 2);
string g = hc.Substring(2, 2);
string b = hc.Substring(4, 2);
Color color;
try {
color = Color.FromArgb(100,
System.Convert.ToByte(r, 16),
System.Convert.ToByte(g, 16),
System.Convert.ToByte(b, 16));
} catch {
// you can choose whether to throw an exception
//throw new ArgumentException("Conversion failed.");
return Colors.Transparent;
}
return color;
}
Enlaces relacionados :
Paso de parámetros de inicialización a aplicaciones Silverlight 2
- FIN -
3:17
|
Etiquetas:
silverlight2,
split
|
This entry was posted on 3:17
and is filed under
silverlight2
,
split
.
You can follow any responses to this entry through
the RSS 2.0 feed.
You can leave a response,
or trackback from your own site.
Suscribirse a:
Enviar comentarios (Atom)
0 comentarios:
Publicar un comentario