[.NET]XAML(1)--物件生成(2)
// Create
TextBlock showTextBlock = new TextBlock();
showTextBlock.Name = "ShowTextBlock";
showTextBlock.Text = "Hello World";
showTextBlock.FontSize = 72;
this.Content = showTextBlock;
}
}
}
执行结果
这两个WP7的范例程序,执行结果都是在画面上显示Hello World。而我们在程序代码里加入断点,来检视执行结果的对象(如下图),可以看出两个范例最终产生的对象结构是相同的。也就是说,不管是使用XAML或是使用程序代码的方式来建构画面对象都是相同的。.NET会依照开发人员设计的XAML内容建立对象,就像是开发人员使用程序代码建立对象一样。理解这个范例之后,可以简单的说,XAML是用来产生对象的配置文件、执行平台使用XAML产生的对象。而.NET依照设定来产生对象是采用Reflection,我们也可以更广义的说「XAML是用来产生对象的Reflection配置文件」。
XAML范例中断
Code范例中断
本篇文章采用「XAML是用来产生对象的Reflection配置文件」,这样的角度剖析XAML。来辅助开发人员理解XAML,并且知道是如何透过XAML来产生对象。
Object-Element
下面这段XAML,代表一个TextBlock对象。当程序执行的时候,.NET会剖析XAML Element来产生一个TextBlock对象。像这样会产生一个对象的XAML Element称为「Object-Element」。
<sample:TextBlock x:Name="ShowTextBlock" Text="Hello World" FontSize="72" xmlns:sample="clr-namespace:System.Windows.Controls;assembly=System.Windows" />
有用过Reflection的开发人员,会知道组件名称、命名空间、类别名称,有这三项字符串数据就可以反射生成一个对象出来。在Object-Element里,这三项数据也有各自设定的规范。依照XAML的规范来解读上面这个Object Element,可以得到:「组件名称」是System.Windows、「命名空间」是System.Windows.Controls、「类别名称」则是TextBlock。.NET剖析Object Element之后,就会依照这些字符串数据,反射生成出一个TextBlock对象。将这个XAML Element取代Hello World范例里的TextBlock依然可以正常的显示Hello World。
<phone:PhoneApplicationPage
x:Class="XamlSample.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
相关新闻>>
- 发表评论
-
- 最新评论 更多>>