Silverlight中的一些Convert整理
2011-06-12 22:37
183 查看
一、0,1转换成true,false用于绑定类似CheckBox中的IsChecked属性:
二、时间字符串转换
使用方法如下:
首先在需要使用转换的页面中加入下语句:
xmlns:local="clr-namespace:XXX" //XXX是你Silverlight的项目命名空间
然后添加:
<UserControl.Resources>
<local:DateTimeConverter x:Key="DateTimeConverter" />
<local:BoolConverter
x:Key="BoolConverter
" />
</UserControl.Resources>
<CheckBox x:Name="chk1" Content="我是CheckBox" IsChecked="{Binding 数据库表字段,Convert={StaticResource BoolConverter }}" Margin="5" />
三、Image图片Source属性绑定
定义一个转换器IconConverter类
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, Type targetType, object parameter, 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:BoolConverter
x:Key="BoolConverter
" />
</UserControl.Resources>
<CheckBox x:Name="chk1" Content="我是CheckBox" IsChecked="{Binding 数据库表字段,Convert={StaticResource BoolConverter }}" Margin="5" />
三、Image图片Source属性绑定
定义一个转换器IconConverter类
// Icon是源类型,ImageSource是目标类型。[ValueConversion(typeof(Icon), typeof(ImageSource))]
//继承了 IValueConverter public class IconConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, 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, Type targetType, object parameter, 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,问题解决了。
相关文章推荐
- silverlight effect的一些整理
- silverlight effect的一些整理
- SQL中CONVERT转化日期函数的使用方法(整理一些高手的贴子)
- 一些语法盲点整理
- c 语言中一些特殊函数的整理
- 整理了一些HTML5新的元素
- 一些函数、指针、const、结构体、extern零散整理
- php中关于mysqli和mysql区别的一些知识点整理
- 一些零碎的整理
- 【转】关于Page Fault的一些整理
- Ubuntu一些命令整理
- 整理Silverlight资源列表(四)——Silverlight案例补充
- (转)GitHub上整理的一些工具,求补充 -
- Unity5 AssetBundle的一些整理(一)
- 2013年的一些常用PHP資源整理下載
- 学习hibernate过程中,自己整理的一些数据,但不全面。
- 整理了一些t-sql技巧
- 一些牛人榜样,多看看他们写的东西(后续整理牛人的blog等)
- 整理一些积累
- 整理下Mysql集群的的一些资料,想做个专题,分析多主和多从的模式