简要说明: IValueConverter主要用于XAML绑定和数据源之间的转换 TypeConverter主要用于自定义类的属性类型之间的转换 本文主要讲解如何使用IValueConverter和TypeConverter.我们通过两个思考问题来引入如何使用IValueConverter和TypeConverter! IValueConverter主要用于将数据源的数据转换为需要在界面上显示的数据,例如:将Url地址转换为图片显示到界面上.将float类型数据显示为货币类型.bool值和Vis…
所谓TypeConverter就是类型转换器,支持两种类型之间相互转换 你可以重写转换逻辑,只要你清楚转换的协议,就可以实现类型互转. 定义一个Person类型,具有一个int类型的Age属性: public class Person { public int Age { get; set; } } 在XAML中添加一个Person的资源: <Window.Resources> <local:Person x:Key="person"></local:Pe…
1. 前言 TypeConverter是XAML解释器的幕后功臣,它做了大量工作,从WPF诞生以来,几乎每一次XAML的运作都有它的参与.虽然UWP中TypeConverter已经彻彻底底退居幕后,连自定义TypeConverver都不可以,但了解TypeConverter的原理对理解XAML解析器的运作方式总是有帮助的. 2. .Net中的TypeConverter TypeConverter在.NET 的早期版本中就已经存在,它可以将一种类型的值转换为其它类型,典型的用法是在数据类型和字符串…
IValueConverter,做 WPF 的都应该接触过,把值换成 Visibility .Margin 等等是最常见的例子,也有很多很好的博文解释过用法.本文只是解释一下,MVVM 中一些情景. 我遇到过一个用例,做些简单的数据可视化.要求把 enum 换成图片. MVVM 模式下,是通过 ViewModel 把业务类 Model 暴露给 View,用绑定完成 ViewModel 和 View 的连接.这样的话,Model 内的 enum 直接绑到 View 时候,视图显示了 enum 值…
以前在用ASP.NET 做B/S系统时,可以方便地在GRIDVIEW DATAList等数据控件中,使用自定义的代码逻辑,比如 使用 <%# GetBalance(custID) %> 这样的调用, GetBalance()为在codebehind类中定义的方法: 在WPF应用程序中有时也有类似的需求,比如数据库表Teacher中有一个字段 Title ,int 类型,取值为1-5,分别对应讲师  研究员 高工  副教授 教授 .在wpf窗口中需要直接显示 讲师 研究员 类似的文字,而不是一个…
转载:http://blog.163.com/wangzhenguo2005@126/blog/static/37140526201085113430862/ 值转换器可以把一种类型转换成另一种类型.例如,绑定到一个代表图片地址的字符串,希望显示的是图片,将数据存储为浮点类型,但通过货币的形式呈现:还有将日期存储成DateTime格式,在界面上显示时使用Calender控件等.下面写一个简单的例子,获得系统当前的时间,显示”now is 2010-xx-xx xx:xx;xx”.xaml的代码:…
以前在用ASP.NET 做B/S系统时,可以方便地在GRIDVIEW DATAList等数据控件中,使用自定义的代码逻辑,比如 使用 <%# GetBalance(custID) %> 这样的调用, GetBalance()为在codebehind类中定义的方法: 在WPF应用程序中有时也有类似的需求,比如数据库表Teacher中有一个字段 Title ,int 类型,取值为1-5,分别对应讲师  研究员 高工  副教授 教授 .在wpf窗口中需要直接显示 讲师 研究员 类似的文字,而不是一个…
一.如何从 Datagrid 中获得单元格的内容 DataGrid 属于一种 ItemsControl, 因此,它有 Items 属性并且用ItemContainer 封装它的 items. 但是,WPF中的DataGrid 不同于Windows Forms中的 DataGridView. 在DataGrid的Items集合中,DataGridRow 是一个Item,但是,它里面的单元格却是被封装在 DataGridCellsPresenter 的容器中:因此,我们不能使用 像DataGridV…
看一个例子,FontFamily="Trebuchet MS, GlobalSansSerif.CompositeFont" .这样一条简单的语句,熟悉WPF的人在xaml中可能经常使用.问题是为什么,WPF能将一个string类型的值,赋值给FontFamily类型. 答案:WPF团队在实现XAML语言的时候,为了使用户能像使用HTML语法一样方便,在WPF中集成了很多的转换器,它们能将String值转化为各种类型,赋值给Control的各个属性. 进一步讨论,本人使用C#4年,WP…
1. 强化高亮的功能 上一篇文章介绍了使用附加属性实现TextBlock的高亮功能,但也留下了问题:不能定义高亮(或者低亮)的颜色.为了解决这个问题,我创建了TextBlockHighlightSource这个类,比单纯的字符串存储更多的信息,这个类的定义如下: 相应地,附加属性的类型也改变为这个类,并且属性值改变事件改成这样: private static void OnHighlightTextChanged(DependencyObject obj, DependencyPropertyC…