通常,XAML元素的属性值将会更新到对应对象的相应的属性上去,如以下XAML片段
<TextBox Name="myTextBox" VeriticalAlignment="Stretch" HorizontalAlignment="Stretch" FontFamily="Verdana" FontSize="24" Foreground="Green"..>
其中TextBox对应于System.Windows.Controls.TextBox 类,该类有对应于其它XAML节点<TextBox>的属性,如Name, VeriticalAlignment HorizontalAlignment FontFamily FontSize, Foreground,
这里有个有趣的问题,就是Xaml属性的值类型是文本类型,而对象属性类型则可以是任意的.Net类型。为了能正确将文本类型的值赋值至对象属性中,Xaml 解析器使用了类型转换器来进行值转换。
Xaml解析器按以下顺序搜索类型转换器
1:检查属性声明,查看是否有定义TypeConverter
2:检查属性类型,是否有定义TypeConverter
如果在属性或属性类型上未定义TypeConverter, 在解析Xaml时将出错,这种机制简单而灵活,但不容易发现问题,毕竟该类型转换只发生在软件运行时。