博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF 之转换器
阅读量:5011 次
发布时间:2019-06-12

本文共 2731 字,大约阅读时间需要 9 分钟。

    举个例子,比如在邮件系统中,我们在设计数据库的时候,用0代表邮件未读,1代表已读,这个时候我们希望未读的时候用没有打开邮件的图片显示,而已经读的邮件用打开的邮件图片显示出来,这个在web和winform中很好实现,但是在wpf中我们需要借助转换器来实现。

   所谓的转换器就是通过一个条件或者一个类型,转换成另外一种结果或者类型,主要实现了IValueConverter接口,下面把刚才的例子简单的用代码写一下

   首先我们来定义一个转换器

  

//定义值转换器    [ValueConversion(typeof(int), typeof(String))]    public class DateConverter : IValueConverter    {        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)        {            int reValue = System.Convert.ToInt32(value);            string imgPath = "/Financial;component/Images/public/mail0.gif";            if (reValue == 1)            {                imgPath="/Financial;component/Images/public/mail1.gif";            }            return imgPath;        }        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)        {            string strValue = value.ToString();            return value;        }           }

Convert和ConvertBack的区别:

Convert函数表示从数据源到目标的值转换,ConvertBack函数表示从目标到数据源的值转换。因此,如果绑定模式是一次绑定或单向 绑定,只需实现Convert函数;如果绑定模式是双向绑定,需要实现Convert和ConvertBack函数。

在这里我们不仅需要通过传过来的1和0来判断显示哪个图片,而且还要显示的图片显示在绑定的DataGrid中,所以我们需要使用ConVert和ConVertBack

下一步,我们就要在控件中去绑定了

有几点需要说明:

1、首先我们需要引入空间

xmlns:local="clr-namespace:PFM.DawnXZ.WPF.UserControls"

 这里就和web中使用用户控件很类似,然后引入资源

 这里我用的是用户控件,所以使用UserControl.Resources,如果不是用户控件,比如window窗体,就要使用window.Resources了(这个问题曾经纠结过)

2、绑定到需要转换的控件中

 这里面使用了模板列,这个后期会说到,最主要的是这个

<Image  Source="{Binding ReadState,Converter={StaticResource dateConverter},Mode=OneWay}" Name="image1"  Width="16" Height="14"  />

 

这样我们就可以通过我们定义的转换器来实现我们想要的东西了...

 

转载于:https://www.cnblogs.com/shuang121/archive/2013/01/06/2848151.html

你可能感兴趣的文章
前端面试题汇总(持续更新...)
查看>>
如何成为F1车手?
查看>>
QT自定义消息
查看>>
Save (Not Permitted) Dialog Box
查看>>
装饰模式(Decorator)
查看>>
任务13:在Core Mvc中使用Options
查看>>
利用Excel 2010数据透视图实现数字的可视化的图形直观展示
查看>>
Sort Colors
查看>>
iview树的修改某个节点,树刷新后自动展开你刚才展开的所有节点
查看>>
oracle服务起不来以及无法监听问题解决
查看>>
Mvc--Html.ActionLink()的用法
查看>>
delphi 基础书籍推荐
查看>>
《面向对象程序设计》2018年春学期寒假及博客作业总结
查看>>
iOS开发UI之KVC(取值/赋值) - KVO (观察某个对象的某个属性的改变)
查看>>
1.7 将一个MxN矩阵所有为0的元素所在行和列全部置0
查看>>
删除U盘时提示无法停止‘通用卷’设备的解决方法!!不要每次都硬拔了,对电脑有不小的损害!!!...
查看>>
Java中接口与接口和类之间的关系
查看>>
芯片TPS70925
查看>>
linux shell 发送email 附件
查看>>
人群密度估计 CrowdCount
查看>>