微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Silverlight中的一些Convert整理

一、0,1转换成true,false用于绑定类似CheckBox中的IsChecked属性

[c-sharp] view plain copy print ?
  1. public class BoolConverter : IValueConverter  
  2.     {  
  3.         public object Convert(object value, Type targettypeobject parameter, CultureInfo culture)  
  4.         {  
  5.             string s = (string)value;  
  6.             bool b;  
  7.             if (s ==null || s.Trim().Length == 0 || s == "0")  
  8.                 b = false;  
  9.             else  
  10.                 b = true;  
  11.             return b;  
  12.         }  
  13.         public object ConvertBack(object value, CultureInfo culture)  
  14.         {  
  15.             string strValue = (bool)value?"1":"0";  
  16.             return strValue;  
  17.         }  
  18.     }  

 

二、时间字符串转换

[c-sharp] view plain copy print ?
  1. #region 为日期定义转换器   
  2.    //定义一个转换类 并被页面引用为资源   
  3.    /* 
  4.   * IValueConverter - 值转换接口,将一个类型的值转换为另一个类型的值。它提供了一种将自定义逻辑应用于绑定的方式 
  5.   *     Convert - 正向转换器。将值从数据源传给绑定目标时,数据绑定引擎会调用方法 
  6.   *     ConvertBack - 反向转换器。将值从绑定目标传给数据源时,数据绑定引擎会调用方法 
  7.  */  
  8.    /// <summary>   
  9.    /// 正向转换器。将值从数据源传给绑定目标时,数据绑定引擎会调用方法  
  10.    /// </summary>   
  11.    /// <param name="value">转换之前的值</param>  
  12.    /// <param name="targettype">转换之后的类型</param>  
  13.    /// <param name="parameter">转换器所使用的参数</param>  
  14.    /// <param name="culture">转换器所使用的区域信息</param>  
  15.    /// <returns>转换后的值</returns>  
  16.    public class DateTimeConverter : IValueConverter  
  17.    {  
  18.        public object Convert(object value,  
  19.                           Type targettype,  
  20.                           object parameter,  
  21.                           CultureInfo culture)  
  22.        {  
  23.            DateTime date = (DateTime)value;  
  24.            return date.ToString("yyyy-MM-dd");  
  25.        }  
  26.        /// <summary>   
  27.        /// 反向转换器。将值从绑定目标传给数据源时,数据绑定引擎会调用方法  
  28.        /// </summary>   
  29.        /// <param name="value">转换之前的值</param>  
  30.        /// <param name="targettype">转换之后的类型</param>  
  31.        /// <param name="parameter">转换器所使用的参数</param>  
  32.        /// <param name="culture">转换器所使用的区域信息</param>  
  33.        /// <returns>转换后的值</returns>  
  34.        public object ConvertBack(object value,  
  35.                                  Type targettype,  
  36.                                  object parameter,  
  37.                                  CultureInfo culture)  
  38.        {  
  39.            string strValue = value.ToString();  
  40.            DateTime resultDateTime;  
  41.            if (DateTime.TryParse(strValue, out resultDateTime))  
  42.            {  
  43.                return resultDateTime;  
  44.            }  
  45.            return value;  
  46.        }  
  47.    }  
  48.    #endregion  

使用方法如下:

 首先在需要使用转换的页面中加入下语句:

xmlns:local="clr-namespace:XXX"  //XXX是你Silverlight的项目命名空间

然后添加

<UserControl.Resources>
        <local:DateTimeConverter x:Key="DateTimeConverter" />

       <local:BoolConverterx:Key="BoolConverter" />

</UserControl.Resources>


 <CheckBox x:Name="chk1" Content="我是CheckBox" IsChecked="{Binding 数据库表字段,Convert={StaticResource BoolConverter }}" Margin="5" />


三、Image图片Source属性绑定

定义一个转换器IconConverter类

  1. <PRE class=csharp name="code"// Icon是源类型,ImageSource是目标类型。</PRE>[ValueConversion(typeof(Icon), typeof(ImageSource))] <BR>  
  2. <PRE class=csharp name="code">//继承了 IValueConverter  
  3. public class IconConverter : IValueConverter                   
  4. {  
  5.      public object Convert(object value, CultureInfo culture)  
  6.      {  
  7.              Icon icon = (Icon)value;      
  8.              Bitmap bitmap = icon.ToBitmap();  
  9.              IntPtr hBitmap = bitmap.GetHbitmap();  
  10.              ImageSource bitmapSource =  
  11.              Imaging.CreateBitmapSourceFromHBitmap(  
  12.              hBitmap, IntPtr.Zero, Int32Rect.Empty,  
  13.              BitmapSizeOptions.FromEmptyOptions());  
  14.              return bitmapSource;  
  15.      }  
  16.   
  17.     //下面的函数是为了实现上面转换的逆操作的,这里我们不需要把ImageSource再变成Icon所以没有写具体的实现  
  18.     public object ConvertBack(object value, CultureInfo culture)  
  19.     {  
  20.             throw new NotImplementedException();  
  21.      }  
  22. }  
  23.   
  24.   
  25.   
  26. 最后把数据再重新绑定一下,  
  27.   
  28. 1、添加引用:xmlns:local="clr-namespace:转换器所在命名空间"  
  29.   
  30. 2、添加资源:<local:IconConverter x:Key="iconConverter"/>  
  31.   
  32. 3、绑定转换器数据:<Image Source="{Binding Path=MenuIcon, Converter={StaticResource iconConverter}}" />  
  33.   
  34.   
  35. OK,问题解决了。</PRE>  
  36. <PRE></PRE>  
  37. <P></P>  
  38. <PRE></PRE>  
  39. <BR>  
  40. <BR>  
  41. <P></P>  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐