一.从零认识XAML
一.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的更多相关文章
- WPF从入门到放弃系列第二章 XAML
本文是作者学习WPF从入门到放弃过程中的一些总结,主要内容都是对学习过程中拜读的文章的整理归纳. 参考资料 XAML 概述 (WPF):https://msdn.microsoft.com/zh-cn ...
- WPF App.xaml.cs常用模板,包括:异常捕获,App只能启动一次
App.xaml.cs中的代码每次都差不多,故特地将其整理出来直接复用: using System; using System.Configuration; using System.Diagnost ...
- WPF学习里程(二) XAML基础
1.什么是XAML? 官方语言: XAML是eXtensible Application Markup Language的英文缩写,相应的中文名称为可扩展应用程序标记语言,它是微软公司为构建应用程序用 ...
- 【WPF】CAD工程图纸转WPF可直接使用的xaml代码技巧
前言:随着工业化的进一步发展,制造业.工业自动化等多领域,都可能用到上位监控系统.而WPF在上位监控系统方面,应该算是当下最流行的前端框架之一了.而随着监控体系的不断完善与更新迭代,监控画面会变得越来 ...
- 菜鸟学Struts2——零配置(Convention )
又是周末,继续Struts2的学习,之前学习了,Struts的原理,Actions以及Results,今天对对Struts的Convention Plugin进行学习,如下图: Struts Conv ...
- x:bind不支持样式文件 或 此Xaml文件必须又代码隐藏类才能使用{x:Bind} 解决办法
这两天学习UWP开发,发现一个很有趣的问题,就是我题目中的描述的. 我习惯了在ResourceDictionary中写样式文件,但是发现用x:Bind时会有问题 如果是写在Style里,则提示 “x: ...
- 13、零配置Struts2开发
Convention 插件 从 Struts 2.1 开始, Struts 可以使用 Convention 插件来支持零配置: Convention 插件完全抛弃配置信息, 不仅不需要使用 strut ...
- Xamarin+Prism开发详解二:Xaml文件如何简单绑定Resources资源文件内容
我们知道在UWP里面有Resources文件xxx.resx,在Android里面有String.Xml文件等.那跨平台如何统一这些类别不一的资源文件以及Xaml设计文件如何绑定这些资源?应用支持多国 ...
- 从零自学Hadoop(22):HBase协处理器
阅读目录 序 介绍 Observer操作 示例下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,Sour ...
随机推荐
- redo/declare/typeset
变量设置功能,都是由命令行直接设置的,那么,可不可以让使用者能够经由键盘输入? 什么意思呢?是否记得某些程序执行的过程当中,会等待使用者输入 "yes/no"之类的讯息啊? 在 b ...
- DataTable转换成List集合,传递到HTML页面
public string GetPwd(string str) { var dt= bll.Gets(str); List<string> list = new List<stri ...
- [PHP] 控制反转依赖注入的日常使用
控制反转:控制权交给了自己的类 依赖注入:依赖另一个类,我没有手动去new它 <?php /*我自己要用的类*/ class User { private $name; private $age ...
- 记一次servlet项目启动
前言 tomcat 和 jetty 都属于 web 容器. mac安装tomcat brew install tomcat 安装之后,输入 catalina -h,可以看到各种命令,如run.star ...
- jquery实现ajax提交表单的方法总结
方法一: 分别获取所需数据元素,DOM结构外层不用包form标签(适用于数据量少,数据元素分散于整个页面) $.ajax({ type: 'POST', url:'', data: { residen ...
- webpack入门教程--3
webpack打包还可以使用配置文件,我们先创建一个叫做webpack.config.js的文件.这里需要注意一下,这个JS文件的名字不是我们胡乱写的,也是不能更改的,因为webpack 命令执行后, ...
- 9个Console命令
九个Console命令,让js调试更简单 By.cllgeek 一.显示信息的命令 1: <!DOCTYPE html> 2: <html> 3: <head> 4 ...
- 42.Odoo产品分析 (四) – 工具板块(10) – 问卷(2)
查看Odoo产品分析系列--目录 接上一篇Odoo产品分析 (四) – 工具板块(10) – 问卷(1) 4 页面 即问卷,点开一项查看: 可以看出,网页就是问卷本身的子目录,其中指明了该目录包括哪 ...
- Eclipse插件开发教程-插件的导出和安装应用
Eclipse插件可以给开发人员提供不少便利,在很多场景下,插件甚至是必不可少的.那么怎么自己开发一个插件呢?前面两篇讲了怎么开发插件,那么开发完了Eclipse插件之后,怎么使用呢?下面就讲讲插件的 ...
- 使用Ajax轮询模拟简单的站内信箱(消息管理)功能
前一段时间项目需要写一个类似于站内信箱的消息管理的功能,由于对前端不是很熟悉,刚开始不知道怎么做,后来看了网上的方案,现模拟一个非常简单的消息管理. 我们首先看一下最终效果的样式,就是非常简单的一个样 ...