一、0,1转换成true,false用于绑定类似CheckBox中的IsChecked属性:
- public class BoolConverter : IValueConverter
- {
- public object Convert(object value, Type targettype, object parameter, CultureInfo culture)
- {
- string s = (string)value;
- bool b;
- if (s ==null || s.Trim().Length == 0 || s == "0")
- b = false;
- else
- b = true;
- return b;
- }
- public object ConvertBack(object value, CultureInfo culture)
- {
- string strValue = (bool)value?"1":"0";
- return strValue;
- }
- }
二、时间字符串转换
- #region 为日期定义转换器
- //定义一个转换类 并被页面引用为资源
- /*
- * IValueConverter - 值转换接口,将一个类型的值转换为另一个类型的值。它提供了一种将自定义逻辑应用于绑定的方式
- * Convert - 正向转换器。将值从数据源传给绑定目标时,数据绑定引擎会调用此方法
- * ConvertBack - 反向转换器。将值从绑定目标传给数据源时,数据绑定引擎会调用此方法
- */
- /// <summary>
- /// 正向转换器。将值从数据源传给绑定目标时,数据绑定引擎会调用此方法
- /// </summary>
- /// <param name="value">转换之前的值</param>
- /// <param name="targettype">转换之后的类型</param>
- /// <param name="parameter">转换器所使用的参数</param>
- /// <param name="culture">转换器所使用的区域信息</param>
- /// <returns>转换后的值</returns>
- public class DateTimeConverter : IValueConverter
- {
- public object Convert(object value,
- Type targettype,
- object parameter,
- CultureInfo culture)
- {
- DateTime date = (DateTime)value;
- return date.ToString("yyyy-MM-dd");
- }
- /// <summary>
- /// 反向转换器。将值从绑定目标传给数据源时,数据绑定引擎会调用此方法
- /// </summary>
- /// <param name="value">转换之前的值</param>
- /// <param name="targettype">转换之后的类型</param>
- /// <param name="parameter">转换器所使用的参数</param>
- /// <param name="culture">转换器所使用的区域信息</param>
- /// <returns>转换后的值</returns>
- public object ConvertBack(object value,
- Type targettype,
- object parameter,
- CultureInfo culture)
- {
- string strValue = value.ToString();
- DateTime resultDateTime;
- if (DateTime.TryParse(strValue, out resultDateTime))
- {
- return resultDateTime;
- }
- return value;
- }
- }
- #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" />
定义一个转换器IconConverter类
- <PRE class=csharp name="code"> // Icon是源类型,ImageSource是目标类型。</PRE>[ValueConversion(typeof(Icon), typeof(ImageSource))] <BR>
- <PRE class=csharp name="code">//继承了 IValueConverter
- public class IconConverter : IValueConverter
- {
- public object Convert(object value, CultureInfo culture)
- {
- Icon icon = (Icon)value;
- Bitmap bitmap = icon.ToBitmap();
- IntPtr hBitmap = bitmap.GetHbitmap();
- ImageSource bitmapSource =
- Imaging.CreateBitmapSourceFromHBitmap(
- hBitmap, IntPtr.Zero, Int32Rect.Empty,
- BitmapSizeOptions.FromEmptyOptions());
- return bitmapSource;
- }
- //下面的函数是为了实现上面转换的逆操作的,这里我们不需要把ImageSource再变成Icon所以没有写具体的实现
- public object ConvertBack(object value, CultureInfo culture)
- {
- throw new NotImplementedException();
- }
- }
- 最后把数据再重新绑定一下,
- 1、添加引用:xmlns:local="clr-namespace:转换器所在命名空间"
- 2、添加资源:<local:IconConverter x:Key="iconConverter"/>
- 3、绑定转换器数据:<Image Source="{Binding Path=MenuIcon, Converter={StaticResource iconConverter}}" />
- OK,问题解决了。</PRE>
- <PRE></PRE>
- <P></P>
- <PRE></PRE>
- <BR>
- <BR>
- <P></P>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。