十二、数据绑定——转换器
通过上一篇文章,我们可以发现一个问题,我们仅仅给图片赋值了一个路径,然而我们可以最终显示一张图片,这期间我们并没有进行任何的转换。当然,这并不是神出来的,而是.Net框架已经在我们感觉不到的情况下帮我们转换了,但是有些类型还是无法转换的,比如说,bool类型。以下就解决这一问题。也就是要将model(后台)转换成Ui(前台)。
第一步:定义一个转换器
说明:(1)示例中IsTip是布尔类型,是Ui;隐藏/显示 是枚举类型,是model
(2)该类一般定义在工程的Common文件夹下,命名规则是:Ui中的类型+model中的类型+Converter.cs
public class BoolVisibilityConverter : IValueConverter //实现转换器接口
{
//Convert是将model中的类型转换成Ui中的类型
public object Convert(object value, Type targetType, object parameter, string language)
{
//throw new NotImplementedException();
bool b = (bool)value;
return b ? Visibility.Visible : Visibility.Collapsed;
}
//ConvertBack是用于双向绑定,如果不是双向绑定,此方法可以直接抛出异常即可,不用写方法体
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
// throw new NotImplementedException();
Visibility v = (Visibility)value;
return v == Visibility.Visible;
}
}
第二步:在响应的XAML中
(1)在根标签中加上 xmlns:别名="suing:工程名.文件夹名",将转换器类引入文件中。例如:xmlns:common="using:Register.Common"
(2)在根标签之下加上 <Page.Resources>
<别名:转换器名 x:Key="boolVisConverter"></别名:转换器名 >
</Page.Resources>
例如 <Page.Resources>
<common:BoolVisibilityConverter x:Key="boolVisConverter"></common:BoolVisibilityConverter>
</Page.Resources>
(3)在控件中绑定 Visibility="{Binding IsTip,Converter={StaticResource boolVisConverter}}"
posted on 2012-12-06 21:29 gentle_girl 阅读(319) 评论(0) 编辑 收藏 举报