使用TypeConverter类
2024-08-29 19:54:29
3.2.2 使用TypeConverter类将XAML标签的Attribute与对象的Property进行映射注意本小节的例子对于初学者来说理解起来比较困难而且实用性不大,主要是为喜欢刨根问底的WPF程序员准备的,初学者可以跳过这一小节。首先,我们准备了一个类:
这个类具有两个属性:
● string类型的Name
● Human类型的Child。
现在我的期望是,如果在XAML里这样写:
则能够为Human实例的Child属性赋一个Human类型的值,并且Child.Name就是这个字符串的值。我们先看看直接写行不行。在UI上添加一个按钮button1,并在它的Click事件处理器里写上:
编译没有问题,但在单击按钮之后程序抛出异常,告诉Child不存在,为什么Child不存在呢?原因很简单,Human的Child属性是Human类型,而XAML代码中的ABC是个字符串,编译器不知道如何把一个字符串实例转换成一个Human实例。那我们应该怎么做呢?办法是使用TypeConverter和TypeConverterAttribute这两个类。首先,我们要从TypeConverter类派生出自己的类,并重写它的一个ConvertFrom方法。这个方法有一个参数名为value,这个值就是在XAML文档里为它设置的值我们要做的就是把这个值“翻译”成合适类型的值赋给对象的属性:
有了这个类还不够,还要使用TypeConverterAttribute这个特征类把StringToHumanTypeConverter这个类“粘贴”到作为目标的Human类上。
因为特征类在使用的时候可以省略Attribute这个词,所以也可以写成:
最新文章
- C/C++ Memory Layout
- BAT实现服务器文件同步
- Linux进程管理
- Java 内部类摘抄
- EditText的hint不显示
- 摩托罗拉SE4500 三星 S3C6410 Wince6.0平台软解码调试记录以及驱动相关问题解释
- PLSQL_性能优化系列10_Oracle Array数据组优化
- git服务器gitlab之搭建和使用--灰常好的git服务器【转】
- (译)";usermod";命令使用完全指导---15个练习例程截图
- 查找——图文翔解Treap(树堆)
- 经典回忆Effective C++ 1
- LeetCode OJ 42. Trapping Rain Water
- hdu 2089 不要62(入门数位dp)
- Iframe 自适应高度
- 各种MM(存储器)含义
- Python(列表操作应用实战)方法二
- 记录一次使用VS2015编译错误的原因查找(boost+gdal)
- 简单明了的掌握diff命令? 参考: http://www.ruanyifeng.com/blog/2012/08/how_to_read_diff.html
- 字符集(编码)转换_Qt532_QString
- [ Office 365 开发系列 ] 前言