Silverlight3系列(七)数据绑定 Data Binding 3 数据类型转换 Data Converter
7 数据转换
在普通的情况下,数据从后台到前台显示,没有任何变化。看起来是符合逻辑的,但是有可能不是你想要的效果,数据源的数据可能是的低级别的(这里的低级别是说数据比较原始,或者说是数据库可以理解的,不是最终用户可以理解的形式),你不想让他直接显示在界面上。例如:你可能会将数字变成用户可以看懂的形式、或者是想让日期显示成长格式的字符串。如果是这样的话,你需要将数据转换成正确的显示形式。如果是双向绑定,你也需要将用户提供的数据转换成数据库可以存储的形式。
很幸运的是,Silverlight允许你创建一个值转换类来完成。这个值转换类负责将数据库的值转换成可以显示的值,如果是双向绑定,还可以将用户输入的值转换成数据库可以存储的值。
在数据绑定中,值转换是很常用的。你可以在下列的情况中使用它们:
1)将数据格式化成string。例如:将数字转换成string,这是最常用的方式,但不是唯一的功能。
2)创建一个特殊的Silverlight类型。例如:你将读取的一些二进制数据创建成一个BitmapImage对象,以便可以将它绑定到一个Image控件。
3)有条件的改变一个绑定数据的一些属性。例如:通过值转换类改变一个控件的背景色,或者是高亮显示其中的一部分。
7.1 使用值转换格式换字符串
值转换对于需要从数字显示为字符串的时候,是一个很好的工具。例如:你的一个商品的单价属性,在数据库中你可能使用decimal存储,但是显示的时候你需要显示为3.9900,或者你还需要显示成一个钱的符号,就好像¥49.99。
你可以通过下面的步骤创建一个值转换类。
1)创建一个实现IValueConverter接口(接口在System.Windows.Data空间下面)的类,将这个类放在你的Silverlight项目中,而不是webservice项目中。
2)实现Convert()方法,将原始值转换为可以显示的值。
3)实现ConvertBack()方法,反过来,将显示的值,转换为原始的值。
上图是一个转换的示意图。
在decima数值l到currency货币的转换中,你可以使用Decimal.ToString()方法来完成,你需要设置转换结果的形式“C”
string currentyText=decimalPrice.ToString("C");