Silverlight类型转换器工作原理
XML属性的值始终是一个字符串,但是对象的属性可以是任何.NET类型。因此XAML语法解析器需要执行一个转换。这个转换主要通过type converters完成,来自完整版.NET 框架的基础架构的一部分。
本质上,一个类型转换器在程序中主要有一个角色------它提供一个有用的方法,把指定的.NET数据类型转换为其他类型或者将其他类型转换为.NET的指定类型。XAML解析器按以下两个步骤找到类型转换器:
1.
它检查属性的声明,查找TypeConverter属性(如果存在,TypeConverter属性表示哪些类可以执行转换)。比如,当你Foreground属性时,.NET检查Foreground属性的声明。
2.
如果在属性声明中没有TypeConverter属性,XAML转换器会检查对应的数据类型的类的声明。比如,Foreground属性用的是Brush对象。Brush类(和它的继承类)使用了BrushConverter,因为Brush类用了TypeConverter(typeof(BrushConverter))属性。
如果在属性声明或类的声明上没有相关的类型转换器,XAML解析器将会产生错误。