[.NET]XAML(1)--物件生成(3)

来源:未知 责任编辑:责任编辑 发表时间:2015-03-01 01:48 点击:

    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="800">
 
    <sample:TextBlock x:Name="ShowTextBlock" Text="Hello World" FontSize="72" xmlns:sample="clr-namespace:System.Windows.Controls;assembly=System.Windows" />
     
</phone:PhoneApplicationPage>
 
当然这样的XAML内容,看起来跟一般常见的XAML有所出入,一整个复杂了许多。因为XAML是由XML发展出来的,很多的格式沿用XML的规范。许多命名空间可以由上层的Element所提供,这样的规范大量减少XAML需要设定的数据内容。这部分有兴趣的开发人员可以参考XML的相关技术资料。另外各种开发平台也定义了一些默认的关键词,让XAML的设计可以变得更简洁,这部分有兴趣的开发人员可以参考开发平台的相关技术资料。以上面这个范例来说,因为是要产生开发平台预设的TextBlock,而这个开发平台预设的命名空间已经在PhoneApplicationPage做过宣告,所以可以将组件名称、命名空间都省略掉。XAML经过这些规范的简化之后,就可以产生出一般常见的XAML数据内容。
 
Property-Attribute
下面这段XAML,代表一个TextBlock对象, TextBlock对象有一个Text属性。当程序执行的时候,.NET会剖析XAML Element来产生一个TextBlock对象,并且将这个TextBlock对象的Text属性设定为Hello World、FontSize属性设定为72。像这样会设定一个对象属性的设定,称为「Property-Attribute」。
 
<TextBlock x:Name="ShowTextBlock" Text="Hello World" FontSize="72"/>
 
查询MSDN可以发现TextBlock的FontSize属性,是一个型别为System.Double的属性。而XAML因为是XML的格式,所以被限制了只能输入字符串形式的数据。受于这样的限制,.NET剖析Property-Attribute的时候,会尝试将字符串数据转型为对象属性的型别。以下面这个范例来说,在执行的阶段会看到.NET的错误通知,告知无法将字符串数据转型为System.Double。
 
<TextBlock x:Name="ShowTextBlock" Text="Hello World" FontSize="72Clark"/>

 \

 

Property-Element
在XAML的规范里,Property-Attribute章节里的TextBlock范例,也可以写成下面范例的格式。将TextBlock的FontSize属性改写成为一对独立的标签,并且设定值写在标签的内容里。像这样设定一个对象属性的设定,称为「Property-Element」。
 
 <TextBlock x:Name="ShowTextBlock" Text="Hello World" >
    <TextBlock.FontSize>
        72
    </TextBlock.FontSize>
</TextBlock>
 
Property-Element的写法看起来有点多余,但其实这是为了XAML的延展性而设计。一般对象的属性有些不单纯是int、double这些实值型别,也有可能是一个对象(Class)、一个结构(Struct)。而一个对象又会有属性,整个对象就是以树状结构生长下去。这时Property-Attribute使用字符串来设定这个对象树状结构会显得力不从心。Property-Element定义了,可以使用Object-Element来当作内容来解决这个问题。.NET在剖析Property-Element的时候,会将Object-Element内容反射生成出对应的对象,设定为对象的对象属性。而使用Object-Element来当作Property-Element的内容另一个原因是,Object-Element自己是描述一个对象,它又可以拥有自己的Property-Attribute、Property-Element,这样就可以一层一层设计出对象的树状结构。

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • 浅析.NET下XML数据访问新机制
  • asp.net 面试+笔试题目第1/2页
  • C# 邮件地址是否合法的验证
  • asp.net 设置GridView的选中行的实现代码
  • C#高级编程:数据库连接[1]
  • ASP.NET&#160;GridView列表代码示例
  • 经典C++程序1
  • 微软ASP.NET站点部署指南(3):使用Web.Config文件的Transforma
  • 微软ASP.NET站点部署指南(2):部署SQL Server Compact数据库
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索 - 移动版 - 返回顶部
Copyright © 2008-2013 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1