XAML 是一种声明性标记语言,XAML 是一种基于 XML 并对 XML 结构规则进行了扩展。

XAML特点:

  • 定义应用程序的界面元素
  • 显示的声明WPF资源(样式、模板、动画等)
  • 可扩展性(自定义UI控件)
  • 集中关注于界面的设计和实现(UI和逻辑分离)
  • 简单易懂,结构清晰(和xml、html类似)

XAML原则:

  • XAML是大小写区分的,元素和属性的名称必须严格区分大小写;
  • 所有的属性值,无论它是什么数据类型,都必须包含在双引号中;
  • 所有的元素都必须是封闭的;如<Button …/> <Button>…</Button>;
  • 最终的XAML文件也必须是合适的XML文档。

XAML命名空间

XAML里面的元素对应着.NET里面的类,但是只提供类名是不够的,XAML解析器还需要知道这个类位于哪个.NET名称空间,这样解析器才能够正确的识别XAML的元素。

xmlns特性是XML中的一个特殊特性,它专门用来声明命名空间。一旦声明一个命名空间,在文档中的任何地方都可以使用该命名空间。默认生成的四条引用如下:

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

是Windows 10 的核心命名空间。包含了大部分用来构建用户界面的控件类。该名称空间的声明没有使用命名空间前缀,所以他成为整个文档的默认命名空间。所以没有前缀的元素都是自动位于这个命名空间下。

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

它包含了XAML的实用特性。该名称空间被映射为前缀为x。

3、xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

该命名空间引用Expression Blend辅助设计类库,对Visual Studio和Expression Blend视图设计模式提供支持,其实际设计中主要提供设计视图页面尺寸定制。

4、xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

该命名空间引用XAML语言辅助类库,对XAML提供辅助设计支持,主要功能是为XAML语法解析器提供辅助解释功能,例如,使用mc:Ignorable=“d”告知XAML解析器以“xmlns:d”为前缀的元素引用在运行时被忽略。

使用其他类,可参考如下方式:

xmlns:sys="clr-namespace:System;assembly=System"  //引用系统类

xmlns:local="clr-namespace:Person"    //引用自定义类

xmlns:customlib="clr-namespace:Library1;assembly=Library"   //引用外部 DLL

XML命名空间的名称和任何特定的.NET名称空间都不匹配。这种设计的原因有以下两个。

第一个原因:XML命名空间通常是URI。这些URI开起来像是在指定Web上的位置,但实际不是。通过使用URI格式的命名空间,不同的XML文档格式就会互相区分开来,作为唯一的标识符,表示这是创建在某个特定环境下的XML文档。

第二个原因:XAML中使用的XML命名空间和.NET命名空间不是一一对应的,如果一一对应的花,会显著增加XAML文档的复杂程度。XAML将这些.NET命名空间组合到单个XML命名空间中。

最新文章

  1. DOM事件
  2. 源码剖析——深入Windows句柄本质
  3. Java for循环的几种用法
  4. Java 虚拟机并发编程
  5. 编写Java应用程序。首先,定义一个Print类,它有一个方法void output(int x),如果x的值是1,在控制台打印出大写的英文字母表;如果x的值是2,在 控制台打印出小写的英文字母表。其次,再定义一个主类——TestClass,在主类 的main方法中创建Print类的对象,使用这个对象调用方法output ()来打印出大 小写英文字母表。
  6. 调用newtonsoft.json反序列出错
  7. Correlation Filter in Visual Tracking系列二:Fast Visual Tracking via Dense Spatio-Temporal Context Learning 论文笔记
  8. 夺命雷公狗ThinkPHP项目之----企业网站13之文章列表页的实现(主要是分页的实现)
  9. 如何在 Windows Azure 的虚拟机 ubuntu 上面安装和配置 openVPN(一)
  10. 转载 asp.net的Request.ServerVariables参数说明
  11. ASP实现计算机爱好者网站,可以直接浏览
  12. python netifaces模块
  13. Linux知识体系之路径属性与目录
  14. 【iOS】Swift if let 和 if var
  15. Maven教程3(依赖管理)
  16. 移动端不利用HTML5和echarts开发一样可以实现大数据展示及炫酷统计系统(产品技术综合)
  17. 学JS的心路历程-正规表达式Regular Expression
  18. MYSQL查询优化(Ⅱ)
  19. ES6标准入门之数值的拓展解说
  20. 刚刚明白了for循环写三角形

热门文章

  1. 4-1逻辑与运算符介绍 &amp; 4-2逻辑或运算符介绍
  2. [Xcode 实际操作]九、实用进阶-(20)创建位移关键帧动画:通过添加运动关键点制作位移动画
  3. Metabolic Signatures of Cystic Fibrosis Identified in Dried Blood Spots For Newborn Screening Without Carrier Identification (文献分享一组-孔楠楠)
  4. STP-2-三个选择
  5. windows下写的shell脚本到linux上不能运行
  6. flask_之参数传递
  7. POJ3744(概率dp)
  8. 转 PHP函数---$_Get()和$_Post()的用法
  9. jQuery val()方法及valHooks源码解读
  10. Django的ORM基础增删改查