一.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代码

<Window x:Class="MyFirstWpf.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>

    </Grid>
</Window>

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

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

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

<N:Window x:Class="MyFirstWpf.MainWindow"
        xmlns:N="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <N:Grid>
    </N:Grid>
</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. mysql 的优化

    =>记录慢速查询 在一个 SQL 服务器中,数据表都是保存在磁盘上的.索引为服务器提供了一种在表中查找特定数据行的方法,而不用搜索整个表.当必须要搜索整个表时,就称为表扫描.通常 来说,您可能只 ...

  2. Java消息中间件----ActiveMQ入门①

    一 首先到ActiveMQ下载安装包 Active官网地址http://activemq.apache.org/activemq-5150-release.html 如图所示,有两个下载的链接,我们下 ...

  3. 程序员50题(JS版本)(一)

    程序1:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? for(var i=1,sum=0;i<=4;i++){ for(var j=1;j<=4;j++){ ...

  4. jQuery.parseJSON()函数详解

    jQuery.parseJSON()函数用于将格式完好的JSON字符串转为与之对应的JavaScript对象. 所谓”格式完好”,就是要求指定的字符串必须符合严格的JSON格式,例如:属性名称必须加双 ...

  5. csharp: LocalDataCache.sync

    app.config: <?xml version="1.0" encoding="utf-8" ?> <configuration> ...

  6. Burnside引理与Polya定理

    感觉这两个东西好鬼畜= = ,考场上出了肯定不会qwq.不过还是学一下吧用来装逼也是极好的 群的定义 与下文知识无关.. 给出一个集合$G = \{a, b, c, \dots \}$和集合上的二元运 ...

  7. .net mvc session失效问题

    最近解决基于.net mvc项目的session失效问题,这个跟大家聊聊. 1.问题分析 .net mvc中,Session失效需要考虑几种情况: 基于权限认证的Action,使用非Ajax请求: 基 ...

  8. 38.Odoo产品分析 (四) – 工具板块(7) – 车队管理(2)

    查看Odoo产品分析系列--目录 接上一篇Odoo产品分析 (四) – 工具板块(7) – 车队管理(1) 4 显示及状态说明 合同默认以列表视图显示:  当合约到期时,以红色显示,并显示状态为待关闭 ...

  9. Easyui 修改jquery validatebox为英文校验提示为中文提示

    修改jquery validatebox为英文校验提示为中文提示 by:授客 QQ:1033553122 测试环境 jquery-easyui-1.5.3 问题描述: 如图,想把校验提示由英文改成中文 ...

  10. Android BroadcastReceiver 接收收到短信的广播

    一.知识介绍 1.broadcastReceiver是广播接受者,四大组件之一. 2.Android中内置了很多系统级别的广播,可以在应用程序中得到各种系统的状态信息. 3.使用场景: ①当手机没有电 ...