去年曾经写过几篇关于Silverlight的一些小技巧,主要是对工作中遇到的问题的一个解决思路,本篇整理出其中经常遇到的几个问题
1.ColorExtension
相信习惯用XAML的程序员经常会被这个问题苦恼着,明明Xaml里面可以智能提示的Color,用C#居然没有.见下图:
那怎么解决这个呢,一般情况下我都是用取色工具把颜色取出来,然后转化成Color,Blend自带的取色工具就很好用
做法是从ARGB转化成Color这样一个思路,封装成一个类ColorExtension
public sealed class ColorExtension
{
private readonly uint value;
private ColorExtension() { }
private ColorExtension(uint color)
{
this.value = color;
}
public static implicit operator Color(ColorExtension color)
{
uint colorValue = color;
return Color.FromArgb((byte)(colorValue >> 24),
(byte)(colorValue >> 16), (byte)(colorValue >> 8),
(byte)(colorValue));
}
public static implicit operator Brush(ColorExtension color)
{ return new SolidColorBrush(color); }
public static implicit operator uint(ColorExtension color)
{
return color.value;
}
public static implicit operator ColorExtension(uint color)
{
return new ColorExtension(color);
}
}