一、
概念理解:
XAML 的英文全称是 eXtensible Application Markup Language ,中文翻译为“可扩展应用程序标记语言”。这种语言是微软公司为构建新一代应用程序用户界面而创建的一种全新的描述性语言。 XAML 是一种相对简 单的、具有通用性的、适合构造和初始化 .NET 对象的说明式编程语言。它由处理 XML 规则的解析器 / 编译器以及一些关键 字组成,但没有定义任何用于它本身的元素,且不能脱离 .NET 框架使用。 XAML 不一定被用于 WPF ,由于它的通用 性,因此可以被用在任何想要使用它的 .NET 技术中,如 WF 。
二、
基本特点和优势:
XAML中所能做的用代码同样可以实现。 XAML仅仅是创建和初始化对象的另一种途径。
1. XAML是一种基于 XML的,格式组织良好的标记语言(比 HTML要严格和准确)。
2. XAML代码比较简单、清晰、易读。
3. 分离的逻辑代码和设计代码。 XAML中逻辑和设计的分离也表示了设计者和开发者角色的独立。
4. 图形设计工具如 expression blend创建的都是 XAML文件。
5.
XAML各元素在本质上是 WPF类的映射,所以开发人员可以很轻松地使用面向对象的技术对 XAML元素进行扩展。因为 XAML文档中的每个元素都对应 一个 . NET类,能够使用 XAML实现的所有功能都可以使用程序代码实现。显然,使用 XAML的效率和方法会更高效和简单。
三、
基本语法:
XAML是基于 XML的,格式组织良好的标记语言。因此,在编写 XAML代码时必须遵循以下几个原则
1. XAML是大小写区分的,元素和属性的名称必须一个严格区分大小写。
2. 所有的属性值,无论它是什么数据类型,都必须包含在双引号中。
3. 所有的元素都必须自我封闭。自我封闭可采取两种方式:( 1)一个起始标记和一个结束标记。( 2)起始和结束标记在一个标记中。
4.
最终的 XAML代码文件必须符合 XML文档要求。
四、
元素 Element :
在 XAML中包括很多描述用户界面的元素。通常情况下,这些元素都必须包含在根元素中,根元素是用于包含所有用户界面元素的基本容器,每个 XAML文件代码必须包含一个根元素,每个根元素下可包含一个根元素或者多 个 XAML元素(称为根元素的子元素)。除此之外,开发人员也可以根据业务需求,采用继承扩展根元素对应类(例如, <Window>元素对应 的是 System.Windows.Window类)。
并不是所有的 WPF类都可以用 XAML描述。那些可以用 XAML描述出来的元素大多数是用来表现用户界面的,这些元素都是由 System.Windows.UIElement类派生出的。该类包含一些与可视化用户界面相关的属性,以提供给 XAML 元素使用。一个从 System.Windows.UIElement派生的元素可以在页面上进行可视化的呈现、可以接受来自键盘和鼠标的输入、还可以可视化地调整大小和布 局子元素的位置,以及触发事件。
并不是所有的 XAML元素都派生自 System.Windows.UIElement。例如 LineBreak、 TableColumn和 Document等元素,都是派生自 System.Windows.FrameworkContentElement类。通常该类中的元素是不能在页面上进行呈现出来的。
大部分的 XAML元素按照其功能可以分为如下的 5个部分:
·根元素
·控件元素
·面板元素
·图形 和几何元素
·文档元素
常用的根元素包括 Window、 Page、 StackPanel、 Canvas、 Grid等。我们还可以从 Page或 Window中派生出一个新类,这样我们就可以创建自定义的根元素,并在 XAML页面中使用。通常情况下,在使用根元素时,必须引用适当的命名空间。
1.
<Window> 元素
该元素对应的是 System.Windows.Window 类,其呈现为与用户交互的,最常用的标准窗口。使用该元素呈现的窗口显示了客户区域、最大化最小化关闭按钮、图标、系统菜单、边框等。
2.
<Page> 元素
该元素对应的是 System.Windows.Controls.Page 类,其封装了一个可实现导航的内容页,该内容页可宿主在 Window 、 NavigationWindow 、 Frame 、 UserControl 等对象中。该元素对应的基类是 System.Windows.Controls.Panel 。
3.
<StackPanel> 元素
该元素对应的是 System.Windows.Controls.StackPanel 类,其能够将子元素置于可垂直或者水平排列的单行中。与 < StackPanel> 类似的还有 <DockPanel> 、 <TabPanel> 、 <WrapPanel> 等 元素,它们的基类都是 System.Windows.Controls.Panel 。
4.
<Canvas> 元素
该元素对应的是 System.Windows.Controls.Canvas 类,其定义了一个可使用相对坐标(相对于 Canvas 定义的区域)显式定位 子元素的区域,例如使用属性 Top 、 Left 、 Bottom 、 Right 。该元素对应的基类是 System.Windows.Controls.Panel 。
5.
<Grid> 元素
该元素对应的是 System.Windows.Controls.Grid 类,其允许开发人员自定义一个包括行和列的表格区域。接着,可在单元格中放入其他子元素。该元素对应的基类是 System.Windows.Controls.Panel 。
五、
命名空间和
设置命名空间的主要目的是帮助 XAML 解析器了解类所在的位置 ,其能够减少冲突的可能性。设置命名空间通过 xmlns属性来实现,该属性值通常必须是 URI(统一资源标志符)。 XML名字空间和 CLR名字空间之间的映射由组装层次 (Assembly level)的 XmlnsDefinition 属性完成。你也可以使用 clr-namespace直接在 XAML中引用一个 CLR名字空间。
每一个 XAML的开始,都必须包含两个名字空间:
<Window xmlns= http://schemas.microsoft.com/winfx/2006/xaml/presentation
xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”>
</Window>
1. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 是 WPF 的核心命名空间,其涵盖所有 WPF 类,包括构建用户界面使用的控件。在本例中,该命名空间没有使用前缀,所以它是整个文档的默认命名空间。换言之,在没有特殊情况下,每个元素都自动归置于该命名空间之下。
2.
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 是 XAML 的命名空间,其包括影响文档解释的各种 XAML 特性。该命名空间映射为前缀 x 。这意味着,通过在任何元素名称之前放置这个前缀,都可使用该前缀,例如 <x:ElementName> 。
六、
Code-Behind 类
开发人员使用 XAML 可构建用户界面,同时为了实现业务逻辑还需要撰写程序逻辑代码,例如事件处理程序等。这些程序逻辑代码包含在 Code- Behind 类文件中。显而易见,必须在 XAML 与 Code-Behind 类文件之间建立一定的引用关系。 注意:在使用 <Window>元素时必须设置 x:Class。