一.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. 杭电ACM2010--水仙花数

    水仙花数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  2. Mysql is null 索引

    看到很多网上谈优化mysql的文章,发现很多在谈到mysql的null是不走索引的,在此我觉得很有必要纠正下这类结论.mysql is null是有索引的,而且是很高效的,(版本:mysql5.5)表 ...

  3. 原生js及H5模拟鼠标点击拖拽

    一.原生js 1.拖拽的流程动作 鼠标按下 触发onmousedown事件 鼠标移动 触发onmousemove事件 鼠标松开 触发onmouseup事件 2.注意事项: 要防止div移出可视框,要限 ...

  4. elementui el-upload 在v-for里使用时 如何获取index

    <div v-for = 'item in list'> <div @click="getImageTypeIndex(index)"> <el-up ...

  5. Kruskal重构树入门

    这个知识点好像咕咕咕了好长了..趁还没退役赶紧补一下吧.. 讲的非常简略,十分抱歉.. 前置知识 Kruskal算法 一定的数据结构基础(如主席树) Kruskal重构树 直接bb好像不是很好讲,那就 ...

  6. Odoo POS会员积分当钱用如何设置?

    问题提问 设定积分规则1元积1分.而后每1积分可以当1分钱用,POS中能处理吗? 解决方案 1) 设定服务类型产品“积分”,其单价为0.01,收入科目为“销售费用” 2) 设定积分计划:积分规则是,订 ...

  7. C#自定义FTP访问类的代码

    如下资料是关于C#自定义FTP访问类的代码,应该对各朋友有帮助. using System; using System.Collections.Generic; using System.Text; ...

  8. 微信小程序转发微信小程序转发

    微信小程序转发涉及以下4个方法: 1.Page.onShareAppMessage({}) 设置右上角“转发”配置,及转发后回调函数返回 shareTicket 票据 2.wx.showSahreMe ...

  9. Centos7VMware虚拟机最小化安装后,安装Tenda U12 USB无线网卡驱动

    前几天买下了Tenda U12 USB 无线网卡 ,想连接上无线玩玩,可惜买下折腾了一周才解决他它驱动问题,前后在VMware上装了十多次,测试了好几个内核版本才搞定,好了废话不多说,分享下我安装过程 ...

  10. C#比较两个由基本数据类型构成的object类型

    /// <summary> /// 比较查询条件 /// </summary> public class ModelExtensions { /// <summary&g ...