使用TypeConverter类

3.2.2 使用TypeConverter类将XAML标签的Attribute与对象的Property进行映射注意本小节的例子对于初学者来说理解起来比较困难而且实用性不大,主要是为喜欢刨根问底的WPF程序员准备的,初学者可以跳过这一小节。首先,我们准备了一个类:

 

这个类具有两个属性:

string类型的Name

Human类型的Child

现在我的期望是,如果在XAML里这样写:

 

则能够为Human实例的Child属性赋一个Human类型的值,并且Child.Name就是这个字符串的值。我们先看看直接写行不行。在UI上添加一个按钮button1,并在它的Click事件处理器里写上:

 

编译没有问题,但在单击按钮之后程序抛出异常,告诉Child不存在,为什么Child不存在呢?原因很简单,HumanChild属性是Human类型,而XAML代码中的ABC是个字符串,编译器不知道如何把一个字符串实例转换成一个Human实例。那我们应该怎么做呢?办法是使用TypeConverterTypeConverterAttribute这两个类。首先,我们要从TypeConverter类派生出自己的类,并重写它的一个ConvertFrom方法。这个方法有一个参数名为value,这个值就是在XAML文档里为它设置的值我们要做的就是把这个值“翻译”成合适类型的值赋给对象的属性:

 

有了这个类还不够,还要使用TypeConverterAttribute这个特征类把StringToHumanTypeConverter这个类“粘贴”到作为目标的Human类上。

 

因为特征类在使用的时候可以省略Attribute这个词,所以也可以写成:

 

 

原文地址:https://www.cnblogs.com/bruce1992/p/14124963.html