一.XMAL的简单了解

XAML读做zaml,,它是WPF中专门用于设计UI的语言,它简单易懂,结构清晰。是一种声明式语言,当你见到一个标签时,就意味着声明了一个对象;对象之间的层级关系要么是并列,要么是包含,全都体现在标签的关系上。 它的出现带来以下几点优势:

(1)无论是软件的功能还是UI设计有所变化导致bug的出现,都不会导致大量代码的修改。

(2)会让逻辑代码更容易理解

(3)它能够使视图(UI)与逻辑代码的分离,实现一种“高内聚低耦合”的结构。

二.新建WPF项目

以上是项目文件中包含的内容

下面简单介绍一下这些分支都是用于做什么的

(1)Properties:它的内容主要是程序需要的一些图标,图片,静态字符串和配置信息。

(2)References(引用):标记了当前项目中引用了哪些其他的项目,里面都是.NET Framewok中的类库。

(3)App.xml:程序的主体,App.xml文件的作用就是声明了程序的进程会是谁,同时指定了程序的主窗体是谁,它还有一个文件——App.xml.cs,它是App.xml的后台代码

(4)MainWindow.xml:程序的主窗体。

三.最简单的XAML代码

  1. <Window x:Class="MyFirstWpf.MainWindow"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. Title="MainWindow" Height="350" Width="525">
  5. <Grid>
  6.  
  7. </Grid>
  8. </Window>

可以在XMAL文件的标签上使用xmlns特征来定义名称空间(Namespace),xmlns也就是XML-Namespace的缩写,其语法如:xmlns[:可选的映射前缀]="名称空间";xmlns后可以跟一个可选的映射前缀,之间用冒号分隔。如果没有

写可选映射前缀,那就意味这所有来自这个名称空间的标签前都不用加前缀,这个没有映射前缀的名称空间称为“默认名称空间”——默认名称空间只能有一个,上面的XAML代码中,<Window>和<Grid>都来自由第二行声明的默认空间

而第一行中的Class特征则来自于第三行中的x:前缀对应的名称空间。如果给第二行声明的名称空间加上一个前缀,比如N,那么XAML代码就必须改成这样才能编译通过:

  1. <N:Window x:Class="MyFirstWpf.MainWindow"
  2. xmlns:N="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. Title="MainWindow" Height="350" Width="525">
  5. <N:Grid>
  6. </N:Grid>
  7. </N:Window>

另外,xmlns= "http://schemas.microsoft.com/winfx/2006/xaml/presentation"对应的是与绘制UI相关的程序集;

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"对应的是XAML语言解析处理相关的程序集。

为了表示同类标签中某个标签的与众不同,可以给它的特征(Attribute)赋值,为特征赋值的语法如下:

<Tag Attribute1=Value1 Attribute2=Value2>

另外需要了解Attribute和Property的区别

(1).Property属于面向对象的,在使用面向对象的思想时,则需要把客观事物进行抽象,再把抽象出来的结果封装成类,类中用来表示事物状态的成员就是Property。

(2).Attribute则是编程语言文法上的,打个比喻来说;如果有两个同类的语法元素A和B,为了区分它们,那么这个时候则需要针对A和B加一些Attribute,也就是说Attribute只与语言层面上的东西相关,与抽象出来的对象没啥关系。

因为Attribute是为了表示区分的,所以把它称为“特征”。

四.XML文件中导入程序集和引用其中的名称空间

假设我的类库程序集名为MyLibrary.dll,其中包括Common和Controls两个名称空间,而且已经把这个程序集引用进WPF项目,那么在XAML中引用其中的名称空间的方法是:

xmlns:映射名=“clr-namespace:类库中名称空间的名字;assembly=类库文件名”

对于MyLibrary.dll里的两个名称空间,XAML中的引用会是:

xmlns:commom="clr-namespace:Common;assembly=MyLibrary"

xmlns:controls="clr-namespace:Controls;assembly=MyLibrary"

如果要使用Common和Conyrols中的类,则代码是这样的

<common:MessagePanel x:Name="window1">

<controls:LedButton x:Name="button">

一.从零认识XAML的更多相关文章

  1. WPF从入门到放弃系列第二章 XAML

    本文是作者学习WPF从入门到放弃过程中的一些总结,主要内容都是对学习过程中拜读的文章的整理归纳. 参考资料 XAML 概述 (WPF):https://msdn.microsoft.com/zh-cn ...

  2. WPF App.xaml.cs常用模板,包括:异常捕获,App只能启动一次

    App.xaml.cs中的代码每次都差不多,故特地将其整理出来直接复用: using System; using System.Configuration; using System.Diagnost ...

  3. WPF学习里程(二) XAML基础

    1.什么是XAML? 官方语言: XAML是eXtensible Application Markup Language的英文缩写,相应的中文名称为可扩展应用程序标记语言,它是微软公司为构建应用程序用 ...

  4. 【WPF】CAD工程图纸转WPF可直接使用的xaml代码技巧

    前言:随着工业化的进一步发展,制造业.工业自动化等多领域,都可能用到上位监控系统.而WPF在上位监控系统方面,应该算是当下最流行的前端框架之一了.而随着监控体系的不断完善与更新迭代,监控画面会变得越来 ...

  5. 菜鸟学Struts2——零配置(Convention )

    又是周末,继续Struts2的学习,之前学习了,Struts的原理,Actions以及Results,今天对对Struts的Convention Plugin进行学习,如下图: Struts Conv ...

  6. x:bind不支持样式文件 或 此Xaml文件必须又代码隐藏类才能使用{x:Bind} 解决办法

    这两天学习UWP开发,发现一个很有趣的问题,就是我题目中的描述的. 我习惯了在ResourceDictionary中写样式文件,但是发现用x:Bind时会有问题 如果是写在Style里,则提示 “x: ...

  7. 13、零配置Struts2开发

    Convention 插件 从 Struts 2.1 开始, Struts 可以使用 Convention 插件来支持零配置: Convention 插件完全抛弃配置信息, 不仅不需要使用 strut ...

  8. Xamarin+Prism开发详解二:Xaml文件如何简单绑定Resources资源文件内容

    我们知道在UWP里面有Resources文件xxx.resx,在Android里面有String.Xml文件等.那跨平台如何统一这些类别不一的资源文件以及Xaml设计文件如何绑定这些资源?应用支持多国 ...

  9. 从零自学Hadoop(22):HBase协处理器

    阅读目录 序 介绍 Observer操作 示例下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,Sour ...

随机推荐

  1. Linux学习笔记之Django项目部署(CentOS)----进阶篇

    一.引入 当我们开发好了一个Django项目之后是需要部署到服务器上的,这样才能正式使用这个项目.之前用了一个运行.sh文件的方法让项目得以在后台运行,其实随着学习的深入,这种方法其实是有点low的, ...

  2. Python全栈学习_作业集锦(持续更新)

    python基础 day1 python初识 . 计算机基础(cpu,内存,硬盘,操作系统) . Python出生于应用 . python发展史 . 编程语言分类 . python优缺点 . pyth ...

  3. SAP MM 事务代码MI31之思考

    SAP MM 事务代码MI31之思考 1 - MI01之痛 多年SAP项目实施实践中,笔者之前对于SAP系统里盘点凭证创建(MI01)事务代码里的输入界面很是不爽: 第一,MI01输入了一行数据以后, ...

  4. EBGP在非直连网络时,需要配置ebgp的最大跳数,否则无法建立非直连的EBGP邻居

    结论: 1.默认情况下,EBGP只能在物理直连的路由器之间建立邻居. 2.要想配置非直连设备间的BGP邻居,必须加配置. 组网图: 抓包: 1.默认情况下,EBGP邻居之间的BGP报文的TTL为1. ...

  5. 容器化系列 - Zookeeper启动和配置 on Docker

    本文简要说明了如何在Docker容器中启动和配置Zookeeper. 1 准备工作 1.1 下载zookeeper镜像 $ docker pull zookeeper:3.4 1.2 单点模式 安装D ...

  6. SQL Server查看视图定义总结

      在SQL Server中如何查看数据库视图的定义呢? 其实官方文档已经有一个较详细的总结了,这里在官方文档的基础上,我们再深入展开分析一下,例如如何获取系统视图的定义.知其然知其所以然吗. 1:使 ...

  7. 网络编程 单纯UDP通信

    网络编程 单纯UDP通信 1,UDP发送端 2,UDP接收端 UDP发送端: #include <stdio.h> #include <unistd.h> #include & ...

  8. Canvas中的非零环绕

    先上图 当要填充图形时,必须区分开哪些部分是覆盖的,哪些是空的,根据绘制的方向可以判断出来 非零环绕规则:对于路径中指定范围区域,从该区域内部画一条足够长的线段,使此线段的完全落在路径范围之外. 非零 ...

  9. git冲突解决办法合集

    一 换行符CRLF错误解决办法 1 错误产生原因 不同的操作系统使用的换行符是不一样的. unix/linux使用的是LF,max后期也采用了LF,但在windows一直采用的CRLF(回车)换行符. ...

  10. 【English】20190313

     indicators指针['ɪndɪkeɪtəz]  determine决定[dɪˈtɜ:rmɪn] Places null indicator bits at the front of each ...