Silverlight Tip(6)

             去年曾经写过几篇关于Silverlight的一些小技巧,主要是对工作中遇到的问题的一个解决思路,本篇整理出其中经常遇到的几个问题

           1.ColorExtension

              相信习惯用XAML的程序员经常会被这个问题苦恼着,明明Xaml里面可以智能提示的Color,用C#居然没有.见下图:

             image       image

            那怎么解决这个呢,一般情况下我都是用取色工具把颜色取出来,然后转化成Color,Blend自带的取色工具就很好用

           image

        做法是从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);
       }
     }

        然后将自己需要的颜色字段放进去即可,比如

       public static readonly ColorExtension LightBlue = 0XFFD5E9F1;

        现在你就可以通过智能提示点出这些Color了,实际上就是调用一个实例:

      SolidColorBrush brsuh= new SolidColorBrush(ColorExtension.LightBlue)    

        这样写C#代码就很方便了.

        2.DateGrid多语言列标题

           多语言的实现可以参考很久前一篇文章 本地化实现 DateGrid的Header是一个object对象,无法绑定,后来看到某篇博文提供的一个方法,则是利用HeadStyle的DateTemplate实现多语言,感觉非常有帮助,所以此回一并总结出来:       

XAML 代码:

<sdk:DataGridTemplateColumn>
                     <sdk:DataGridTemplateColumn.HeaderStyle>
                         <Style TargetType="sdk:DataGridColumnHeader">
                             <Setter Property="ContentTemplate">
                                 <Setter.Value>
                                     <DataTemplate>
                                         <TextBlock />           
                                     </DataTemplate>
                                 </Setter.Value>
                             </Setter>
                         </Style>
                     </sdk:DataGridTemplateColumn.HeaderStyle>
</sdk:DataGridTemplateColumn>
posted @ 2012-05-30 11:12  ringgo  阅读(1891)  评论(0编辑  收藏  举报