您的位置:首页 > 其它

WPF学习笔记--xaml介绍

2009-06-26 16:36 316 查看
XAML实现UI代码和应用程序逻辑代码的分离。

在.NET 3.0和Windows
Vista中,XAML与WPF一起建立整个的UI。由于XAML是基于XML的,所以每个XAML代码都肯定是一个完整的XML文件。XAML继承了
XML所有的定义和规则。XAML与其他XML扩展不同之处就是他所表示的意义。每个XAML元素是一个.NET
CLR类。基于XML使得我们非常容易扩展和操作XAML。利用XAML的WPF这种关系,开发人员可以单独的设计漂亮的UI,也许真正的美工会更多的出
现。我们可以把程序逻辑写在单独的文件或者是内联嵌入到XML文件。

在XAML中使用得最多的XML功能应该有三个:命名空间、属性和子元素。

例:

<Window

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

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

xmlns:_3DTools="clr-namespace:_3DTools;assembly=3DTools"

x:Class="CoverFlowDemo.Window1" Title="CoverFlowDemo" Height="441" Width="702" Background="black"

x:Name="Window"

xmlns:System="clr-namespace:System;assembly=System
"

xmlns:selfclass="clr-namespace:DataBind
"

>

<Grid>

<Button Width="600">

<Button.Background>White</Button.Background>

</Button>

<selfclass:AddData/>

</Grid>

</Window>

其中xmlns为命名空间.

在Button结点,width为属性,button.background为子元素,这两种使用方式可选择其一。

xaml的优点:

除了都具有xml的优点外还具有如下优点:

1、 用XAML设计UI更简单

2、 XAML比其他的UI设计技术所需编码更少。

3、 XAML设计的UI方便转移、方便在其他环境提交。比如在Web或Windows Client。

4、 用XAML设计动态UI非常容易

xaml文件中 xmlns:x 的作用也是指定命名空间。这里为什么是
x
而不是其他的,我们可以简单的理解为其只是
MS
的一个命名而已,没有任何特殊的意义,当然,为了避免和它的冲突,我们定义自己的命名空间的时候不能是
x。

而另一个
x:Class
的作用就是支持当前
Window
所对应的类,前面已经说过每个
XAML
元素都是一个
CLR
类型,这里的
x:Class

Window
的一个属性,属性的内容指出当前的窗口类是
FirstXAML
名字空间下的
Windows1
。为什么需要类,而不全部用
XAML
实现?
XAML
的主要作用还是编写
UI
部分,我们仍然需要用代码对程序逻辑进行更深层次的控制。

同样地,名字空间也可以自定义,并且这个自定义会给我们带来很大的方便。我们定义如下的一个类:

namespace DataBind

{

public class AddData

{

//

}

}

如果想在
XAML
文件中使用这个
AddData
类对象,我们就可以通过自定义的名字空间引入这个类:

xmlns:local="clr-namespace:
DataBind
"

这里的后缀
local只
是一个标识,你可以设置为任何你喜欢的唯一标识。通过这个引入定义我们就可以在
XAML
文件中用
local
来标识
DataBind
当中的任何类。访问
AddData
类时只需要加上
local
就可以识别了:
<local:
AddData
/>

xmlns:System="clr-namespace:System;assembly=System
"


例子当中引入
.NET

System Assembly
,通过它我们就可以直接使用
System
的任何类。利用这种类似的方式,我们可以在
XAML
中使用几乎所有的
DOTNET
框架类。


XAML

inline
嵌入程序逻辑处理代码的情况。利用
<CDATA[…]]>
关键字引入处理代码。这种情况在实际当中不太合适,我们不应该采用
UI
和逻辑混合的方式。详细的解释可以参数
Windows SDK
文档。

<![CDATA[

void Clicked(object sender, RoutedEventArgs e)

{

button1.Content = "Hello World";

}

]]></x:Code>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: