微软为了把开发模式从网络开发移植到桌面开发和富媒体网络程序的开发上,微软创造了一种新的开发语言------XMAL(读作ZAML),XAML全称Extensible Application MarkUp Language。即可扩展应用程序标记语言。它在做桌面开发和富媒体网络程序开发中扮演HTML+CSS+JS的角色,成为设计师和程序员沟通的枢纽。

现在设计师和程序员一起工作,共同维护软件的版本,只是他们使用的软件不一样----设计师使用Blend(Expression设计套件工具中的一个)来设计UI,程序员使用Visual Studio 开发后台逻辑应用代码。Blend就像PhotoShop等设计工具,因此可以最大限度的发挥设计师的特长。使用它,设计师不仅可以设计出绚丽多彩的UI,还可以让UI上包含动画-----虽然程序员也可以做到这些,但从专业性,时间开销以及技术要求上显然是划不来的。更重要的是,这些绚丽的UI动画都会以XMAL的形式直接保存进项目,无需转化就可以直接编译,节省了大量的时间和成本。

  XAML的优点:

          XAML可以设计出专业的UI和动画----好用。

          XAML不需要专业的编程知识,它简单易懂、结构清晰-----易学。

          XAML能使设计师直接参与软件开发,随时沟通、无需二次转化-----高效

XAML这位翩翩君子的才华可远不止于这些。

自从应用程序从控制台界面(Console User Interface,CUI)升级为图形界面(Graphic User Interface)后,程序员们就一直追求视图(View,即UI)和业务逻辑的分离。以往的开发模式中,程序员很难保证用来实现UI的代码完全不与用来做业务逻辑处理的代码纠缠在一起。UI代码和业务逻辑代码纠缠在一起通称为UI和逻辑的紧耦合,它往往带来以下后果:

无论是软件的功能还是UI的设计有所变化或者是出现Bug,都将导致大量代码的修改。

会使得逻辑代码更加难以理解-------修改往往比重写更困难,因为在修改之前必须要先读懂。

重用逻辑代码编程了Mission Imposible。

XAML的另外一个大优点就是:它帮助开发团队真正的实现了UI和业务逻辑的剥离。XMAL是一种单纯的声明型语言,这就是说它只能用来声明一些UI元素、绘制UI和动画(在XMAL中实现动画是不需要编程的),根本无法在其中加入程序逻辑,这就强制的把逻辑代码从UI中赶走了。这样,与UI相关的元素统统集中在程序的UI层,与逻辑相关的代码统统集中在业务逻辑层,形成了一种”高内聚--低耦合“的结构。形成这种结构后,无论是打算对UI进行较大的改动还是打算重用底层逻辑,都不会花费太大力气,这就好比你某一天给A客户做了一个桔子,A客户很喜欢,A客户将自己的产品介绍给B客户,B客户喜欢桔子的味道,但是希望它看上去像香蕉-----这时候,你只需要将桔子的皮撕下来,换成香蕉的皮就可以了,只需要少量的成本就可以获得和之前一样大的收益(对于软件的换肤功能,WPF提供了强大的Template功能,将在后面详述)

WPF学习第二集-XMAL概览相关推荐

  1. WPF学习第九集-深入浅出话命令

    WPF为我们准备了完善的命令系统,你可能会问:"有了路由事件为什么还需要命令系统呢?".事件的作用是发布.传播一些消息,消息传达到了接收者,事件的指令也就算完成了,至于如何响应事件 ...

  2. WPF学习笔记-第二周【基本笔刷】

    书接上回,这一次,讲的是WPF中的基本笔刷,由于是菜鸟,就不多说了,继续帖示例代码:) 第一部份 代码 第二章 基本笔刷 第一个 示例 VaryTheBackgroud P38  1     #reg ...

  3. 关于图计算图学习的基础知识概览:前置知识点学习(PGL)[系列一]

    关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL)) 0.1图计算基本概念 首先看到百度百科定义: 图计算(Graph Processin ...

  4. A.关于图计算图学习的基础知识概览:前置知识点学习(Paddle Graph L)【一】

    图学习图神经网络算法专栏简介:主要实现图游走模型(DeepWalk.node2vec):图神经网络算法(GCN.GAT.GraphSage),部分进阶 GNN 模型(UniMP标签传播.ERNIESa ...

  5. 再发力!Facebook AI何恺明等最新研究MoCo(动量对比学习)第二版,超越Hinton的SimCLR,刷新SOTA准确率...

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! [导读]无监督学习再发力!Facebook AI 研究团队的陈鑫磊.樊昊棋.Ros ...

  6. jQuery框架学习第二天:jQuery中万能的选择器

    jQuery框架学习第一天:开始认识jQuery jQuery框架学习第二天:jQuery中万能的选择器 jQuery框架学习第三天:如何管理jQuery包装集 jQuery框架学习第四天:使用jQu ...

  7. Ada 程序设计语言(The Ada Programming Language)[第二集]

    Ada 程序设计语言(The Ada Programming Language)[第二集]- -   2.5.2 通用离散类型属性 离散类型包括整型和枚举型,除了上述的属性外,还有: S'Pos   ...

  8. Android 数据库制作APP,在Android 中使用Anko框架制作一个完整的App,第二集

    作者:feintkotlin(Kotlin学习网) 说明:这次更新对一些小的细节进行了改进,并增加了SQLite的操作.该应用支持6.0及以上android系统 更新:当有网络时,将前5条数据保存到数 ...

  9. 【WPF学习】第五十章 故事板

    正如上一章介绍,WPF动画通过一组动画类(Animation类)表示.使用少数几个熟悉设置相关信息,如开始值.结束值以及持续时间.这显然使得它们非常适合于XAML.不是很清晰的时:如何为特定的事件和属 ...

最新文章

  1. 【H.265】H.265(HEVC)编码过程和名词解释
  2. 30 个Python代码实现的常用功能,精心整理版
  3. mysql种default约束的语句_sql语句大全之SQL DEFAULT 约束
  4. 转载 - 背景透明,文字不透明【学习】
  5. 详解模板方法设计模式
  6. 百度网盘vep文件如何转换mp4_用这个软件,聊聊如何将MOV文件转换为MP4
  7. 再见,前端!别更新了,我是学不动了
  8. install cuda on ubuntu
  9. 【机器学习案例】酒店用机器学习,预测哪些客人会放鸽子
  10. 【Alpha】第七次Scrum meeting
  11. Keil5在线调试汇总及基本操作教程
  12. c#连续打印问题,即进销存销售单打印问题完美解决
  13. 计算机VFP基础知识,计算机二级《VFP》考试基础知识:VisualFoxPro基础
  14. 链家网二手房信息爬取(一)
  15. Springboot配置suffix指定mvc视图的后缀
  16. 一文看懂多模态大型语言模型GPT-4
  17. 删除文件夹时,报错“错误ox80070091:目录不是空的”,该如何解决?
  18. SQL Server numeric数据类型
  19. 【漏洞通告】CVE-2022-36803 Atlassian Jira Align权限提升漏洞
  20. 微软Surface Go 体验:可以当平板使用的便携笔记本电脑

热门文章

  1. python 服务端读取字符流和字节流(udp)
  2. tokudb_TokuDB优缺点总结
  3. Hive SQL之FULL JOIN优化
  4. Linux(centos7)下安装OpenSSL 安装详解
  5. 广告投放算法:受众行为分析与人群定向
  6. win2003服务器360修复漏洞打不开网页,WIN2003服务器出现HookPort 服务启动失败的解决办法!...
  7. 通过SPI协议初始化LCD屏
  8. 毕业设计-基于深度学习的古文字识别系统
  9. 浅谈SwiftUI 3.0新加入的CoreData动态FetchRequest过滤与排序特性
  10. java小工具util系列11:判断字符串是否是数值型,包括负数、0、正整数、浮点数等