1.什么是XAML?

官方语言:

XAML是eXtensible Application Markup Language的英文缩写,相应的中文名称为可扩展应用程序标记语言,它是微软公司为构建应用程序用户界面而创建的一种新的描述性语言。

人话:

XAML是一种界面开发语言,跟英语、中文一样,不过人家是用来开发界面的啦~

具体长什么样呢?如下图

2.为什么需要XAML?

随着大众审美的提升,对软件界面要求也严格了很多,这就避免不了程序员和设计师的合作。

合作一般是这样开展:

1.需求分析结束后,程序猿按照需求分析对照需求设计一个出版界面(很low的那种),然后精力主要放在功能开发上。

2.与此同时,设计师对照需求,考虑用户体验,使用专门的设计工具(PS啦),设计出高大上的界面。

3.最后,猿们按照设计师的要求,使用编程语言实现软件的UI。

但是,你懂的,理想跟现实往往有所差距,这样的合作经常会出现“沟通问题”,谁说需求就不会变的。。需求一变,嘿嘿。。

不是设计师跟不上逻辑变更,就是程序员未能完整按照设计员的要求实现界面,这无关对错,

只是"合作的成本就不可能为零"--猛哥经典语录。

所以为了减少合作成本,有一种解决方案,就是将上述的串行,改为并行,也就是说,无需等待上一个人的完成,而是设计师和猿

同步开发。所以就创造了这牛批的界面开发语言---XML.

原来的创作思路是网络程序开发,可以使用HTML、CSS、JS直接生成UI,程序员则在此基础上进行开发,所以为了把这种模

式从网络端移植到桌面应用程序,XAML诞生啦(是不是能理解为什么XAML很像xml和Html了~)。

3.XAML有哪些基础知识?

然后我们了解一下XAML基础

XAML文档中的每个元素都映射为.NET类的一个实例。元素名称也完全对应于类名,如Button,即为Button对象,且支持嵌套。

像上图的Grid(网格)里面就可以嵌套其他元素。

我们一起来解析上面的文档截图。包含有<Window>元素和<Grid>元素,这两个都是顶级元素,可以放置所有控件。

所有XAML文档都只能有一个顶级元素。上述文档的意思就是创建一个标题为Window1的窗口,中间放置一个Grid,然后Grid中嵌套

一个Button。

接下来的就有小伙伴好奇了,xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"这么长的一串是啥?

这其实是XAML的名称空间,xmlns专门用来声明名称空间,包含了所有WPF类,包括用来构建用户界面的控件。

可以大致理解成URI指明网站的路径亦或者文件夹路径。在使用visual studio创建WPF项目时会自动创建几条默认引用的名称空间。

WPF学习里程(二) XAML基础的更多相关文章

  1. WPF学习笔记1——XAML之1

    参考文献: http://msdn.microsoft.com/zh-cn/library/ms752059(v=vs.110).aspx <Pro WPF 4.5 in C# > 一.X ...

  2. WPF学习笔记——认识XAML

    Extensible Application Markup Language,XAML是一种声明性标记语言. 一.XAML语法概述 1,与XML类似,用尖括号标记元素 <StackPanel&g ...

  3. Solr学习之二-Solr基础知识

    一 基本说明 简单来说Solr是基于Lucene的高性能的,开源的Java企业搜索服务器.Solr可以看作一个Web app,运行在tomcat或Jetty这类HTTP服务器上, 底层是一个基于Luc ...

  4. Apache Thrift学习之二(基础及原理)

    Apache Thrift 是 Facebook 实现的一种高效的.支持多种编程语言的远程服务调用的框架.本文将从 Java 开发人员角度详细介绍 Apache Thrift 的架构.开发和部署,并且 ...

  5. WPF学习笔记2——XAML之2

    三.事件处理程序与代码隐藏 例如,为一个Page添加一个Button控件,并为该Button添加事件名称Button_Click: <Page xmlns="http://schema ...

  6. ES6学习(二)基础命令

    一.Let 和 const  作用域的概念:在es5之前是有两个作用域,一个是全局作用域,另外一个是函数作用域,在es6中就多了这样一个块作用域.在这里let 和 const 就是传说中的块作用域,它 ...

  7. WPF学习一:XAML的资源(Resources)结构

    一个初学者,把知识做个积累,如果有不对的地方,还请高手指出,谢谢! 先看一段代码:(下面是以Window WPF进行讲解,如果是Web 的话就把<Window改为<Page 而如果是 Us ...

  8. WPF学习笔记二 依赖属性实现原理及性能分析

    在这里讨论依赖属性实现原理,目的只是学习WPF是怎么设计依赖属性的,同时更好的使用依赖属性. 首先我们来思考一个简单的问题:我们希望能验证属性的值是否有效,属性变更时进行自己的处理.回顾一下.net的 ...

  9. HTML5学习笔记二 HTML基础

    一.HTML 标题 HTML 标题(Heading)是通过<h1> - <h6> 标签来定义的. <h1>标题一</h1> <h2>标题二& ...

随机推荐

  1. npm国内淘宝镜像

    理由 由于npm的registry地址是国外的,速度很慢,所以推荐使用淘宝镜像:https://registry.npm.taobao.org 配置方法 临时配置 npm --registry htt ...

  2. eclipse在线安装svn插件subclipse

    eclipse在线安装svn插件subclipse 1 Help > Eclipse Marketplace,打开Eclipse Marketplace 2 切换到Search,输入subcli ...

  3. Centos7 搭建openldap完整详细教程(真实可用)

    最近,由于公司需求,需要搭建openldap来统一用户名和密码,目前市面上几乎所有的工具都支持ldap协议,具体ldap的介绍这里就不详细说明了,这里主要记录一下如果部署openldap来实现Ldap ...

  4. Java IO流 FileOutputStream、FileInputStream的用法   

    FileOutputStream.FileInputStream的使用 FileOutputStream是OutputStream的继承类,它的主要功能就是向磁盘上写文件.FileOutputStre ...

  5. android中VideoView播放sd卡上面的视频

    (1)videoView组件只支持MP4和3gp格式的视屏播放,如果想播放其它视屏格式的文件,还得开发能够播放的视屏播放器 (2)videoView组件功能比较单一,如果想开发功能丰富的播放器,还得重 ...

  6. mysql数据库限制多次登录失败,限定用户重试时间

    前言 最近的项目开始进行安全测试,其中有一个安全问题是这样的. 应该增加用户登录失败处理功能,限制非法登录次数. 建议是增加mysql数据库的登陆失败的锁定功能. 相信大家也都会遇到这样的问题,在这里 ...

  7. 【C++】《Effective C++》第四章

    第四章 设计与声明 条款18:让接口容易被正确使用,不易被误用 请记住 好的接口很容易被正确使用,不容易被误用.你应该在你的所有接口中努力达到这些性质. "促进正确使用"的办法包括 ...

  8. js的函数-function

    function函数 function的英文是[功能],[数] 函数:职责:盛大的集会的意思 在js里,就是函数的意思.在Java里叫做方法. 定义函数 function fun(参数){ //函数体 ...

  9. Openstack glance 镜像服务 (五)

    Openstack glance 镜像服务 (五) 引用: 官方文档glance安装 https://docs.openstack.org/ocata/zh_CN/install-guide-rdo/ ...

  10. intellij idea2020将javaWeb项目打成war包并部署到阿里云服务器遇到java.lang. UnsupportedClass VersionError问题(已解决)

    首先将javaweb项目打包成war文件(有关如何打包参考 https://jingyan.baidu.com/article/20b68a88642829386cec62f7.html.https: ...