分享
 
 
 

XAML开发入门之XAML核心语法

王朝other·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

就如同其它的基于xml的标记语言一样,XAML大体上也遵循XML的语法规则。例如每个XAML元素包含一个名称以及一个或多个属性。在XAML中,每个属性都是和某个WPF类的属性相对应的,而且所有的元素名称都和WPF中定义的类名称相匹配。例如<Button>元素就和System.Windows.Controls.Button类对应。

XAML是一个纯粹的标记语言,这也就意味着某个元素要实现一个事件的处理时,需要在该元素中通过特定的属性来指定相应的事件处理方法名,而真正的事件处理逻辑你可以通过C#或者VB.NET语言进行实现,我们是没有办法通过XAML来编写相应的事件处理逻辑的。假如你对asp.net技术比较了解的话,那么应该对代码后置这个概念不会生疏。对于一个WPF程序来说,我们也可以像ASP.NET那样采用代码后置模型,将页面和相应的逻辑代码分别存放在不同的文件中,也可以以一种内联的方式将页面和逻辑代码都存放在同一个文件中。一般来说,我们是不推荐采用后面这种方式的,但是假如你要坚持这种实现方式亦无不可,但是最好是采用代码后置的方式将呈现层和应用程序逻辑层分离开来。

下面我们通过一个具体的示例来讲解WPF程序中代码后置方式和内联方式的实现机制,在这个示例中依然是使用Button元素来说明这两种方式的区别和实现过程。下面我们通过如下的XAML代码来声明一个Button元素:

35 <Button

36 OnClick="ButtonClickedHandler"

37 Name="MyButton"

38 Width="50"

39 Content="Click Me!" />

而后我们在单击这个Button按钮时,将触发相应的事件,使得该按钮的宽度和其显示的内容信息将发生改变。对应的事件处理程序代码如下:

40 void ButtonClickedHandler(object sender, RoutedEventArgs eventArgs)

41 {

42 MyButton.Width = 100;

43 MyButton.Content = "Thank you!";

44 }

我们通过上面的程序清单可以看出,一旦点击了该按钮,就将使得按钮的宽度从50延展到100,而其显示的文本也由"Click Me!"变为"Thank you!"。同时也可以发现我们可以使用C#或者VB.NET自己对XAML元素的各个属性进行操作,这是因为所有XAML元素的属性都是和WPF类的属性戚戚相关的。为此,你不单单可以使用C#来改变Button的背景颜色、高度等属性,甚至还可以像以前的Windows窗体程序那样通过代码来调整Button元素的位置坐标。

假如要以内联的方式进行上述的实现,我们可以为在XAML文件中使用<x:code>元素,并将所有的内联代码都封装在<![CDATA[...]]>标签中,以确保分析器不会对其中的代码进行解析。下面就是上述示例的内联实现方式的代码:

01 <x:Code>

02 <![CDATA[

03 void ButtonClickedHandler(object sender, RoutedEventArgs eventArgs)

04 {

05 MyButton.Width = 100 ;

06 MyButton.Content = "Thank you! ";

07 }

08 ]]>

09 </x:Code>

QQread.com

推出各大专业服务器评测 linux服务器的安全性能

SUN服务器

HP服务器

DELL服务器

IBM服务器

联想服务器

浪潮服务器

曙光服务器

同方服务器

华硕服务器

宝德服务器

XAML开发人员要注重的一点就是每次声明一个XAML元素时,最好用Name属性为该元素指定一个名称,这样应用程序逻辑开发人员才可以通过代码来访问此元素。这是因为某种类型的元素可能在XAML页面上声明多次,但是假如你不显式地指明各个元素的Name属性,那么我们是无法区分那个是我们想要操作的元素,也就无法通过C#或VB.NET来操作该元素和其中的属性了。

下面是声明一个XAML元素必须遵循的四大原则:

·XAML是大小写区分的,元素和属性的名称必须一个严格区分大小写。例如对于Button元素来说,其在XAML中的声明应该为<Button>,而不是<button>。

·所有的属性值,无论它是什么数据类型,都必须包含在双引号中。

·所有的元素都必须封闭的,也就是说,一个元素必须是自我封闭的,<Button .../>,或者是有一个起始标记和一个结束标记,例如<Button>...</Button>。

·最终的XAML文件也必须是合适的XML文档。

声明一个元素及其相应属性的基本格式如下:

<元素名 属性名="值" 属性名="值" ... />

下面是一个简单的用户登陆窗口界面,其对应的代码见程序清单,我们来这验证选这段代码是否遵循了上述的四大原则。请你仔细查看元素声明的大小写是否对应、所有的属性值是否都包含在双引号中、所有的元素标记是否是封闭的以及该XAML文件是否是一个组织良好的XML文档。

01 <StackPanel

02 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/PResentation"

03 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

04 HorizontalAlignment="Left"

05 Margin="10">

06 <Label

07 Margin="5"

08 Content="Username" />

09 <TextBox

10 Margin="5"

11 BorderBrush="Blue"

12 BorderThickness="1"

13 Background="AliceBlue"

14 Foreground="Black"

15 Width="200"/>

16 <Label

17 Margin="5"

18 Content="PassWord" />

19 <PasswordBox

20 Margin="5"

21 BorderBrush="Blue"

22 BorderThickness="1"

23 Background="AliceBlue"

24 Foreground="Black"

25 Width="200" />

26 <Button

27 Margin="10"

28 Background="AliceBlue"

29 Foreground="Black"

30 Width="100"

31 Height="20"

32 Content="Submit" />

33 </StackPanel>

为了增加XAML代码的可读性,本章中的所有XAML代码都采用了如上述程序清单所示的格式化风格,这样就算是那些包含嵌套元素的复杂标签,我们也可以一目了然地知道其组织结构。当然上述的格式化风格不是请求的,你可以将一个元素声明代码放在一行中,也可以将它分成多行进行放置,一切都取决于你的喜好。因为XAML在部署前是编译为BAML文件的,所以那些多余的空格对编译器的编译过程没有任何的影响,也就是说不会因为空格的多少而影响编译的性能。但是最好还是采用本章采用的格式化风格,究竟清楚的代码可读性对于后续的维护和修改来说是非常重要的。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有