XAML概览 1(译自JeremyBytes.com)
(文章译自JeremyBytes.com,由于原文太长,故分成几篇,能力所限,如有疏漏,希望海涵。另外若有侵权,务必尽快告知)
Overview
了解XAML (可扩展应用程序标记语言)是使用WPF和Silverlight打造最新的.NET用户体验的关键。我们将介绍XAML中的基本概念,并看看它的各种功能,例如命名空间,元素,properties,事件,附加propertise和一些基本布局。我们将创建一个简单的涵盖了这些基础的WPF应用程序。虽然你最终可能会使用拖放工具(如Expression Blend之类)来做大部分的UI设计,但是知道内部的代码实现,能够在你进行最终调整时助你一臂之力,以确保打造卓越的用户体验。
Visual Studio IntelliSense在XAML文件中运行良好。这意味着,当我们进行输入时,我们将得到标签补全,attribute补全,甚至值补全(对于那些枚举值)。取舍之后,你会发现自己大部分的XAML工作都在Visual Studio编辑器中完成了,而可视化的设计工具则被留待对付复杂的情形。
The Set Up
我们将要完成的应用程序是一个简单的秒表。我们从一个WPF应用程序的骨架开始,它包含了一个实现计时器功能的类(我们将自己动手来填充用户界面)。您也可以直接下载这个应用程序的源代码,从这里:http://www.jeremybytes.com/Downloads.aspx。下载里包括初始项目代码和完成后的完整项目代码。项目如下:
- SimpleStopWatch - 这是我们将要做的应用程序。这仅是一个添加了Ticker.cs这个类的新的WPF项目。
- WpfStopWatch - 这是一个完整的应用,包含了一些额外的部分(额外的样式,画笔和自定义表单处理)。这些附加特征是在本介绍范围外的东西;您可以在其他时间再详加了解。
An Initial Window
当新创建一个WPF应用程序时,得到的初始XAML文件的内容如下:
<Window x:Class="SimpleStopWatch.Window1"
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>
让我们简单地浏览一下这些元素。
XAML is XML
需要注意的XAML的第一件事情是——它是XML。如果你需要XML的概述,你可以去这里:http://www.w3schools.com/xml/default.asp。由于XAML是XML文档,它只能有一个根元素。在这种情况下,根元素是“<Window>”(但“<Page>”和“<UserControl>”也很常见)。
XAML Elements are .NET Classes
在XAML文档中的每个元素都是一个.NET类。这意味着“<Window>”和 “<Grid>”也是.NET类。
XAML Namespaces
为了引用.NET类,我们还需要引用相关的命名空间。你可以把这当做在.cs文件中使用 “using”语句。命名空间使用xmlns attribute添加到XAML。您可以看到,在默认情况下,包括2个命名空间:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
第一句是指标准的WPF命名空间。这也是默认的命名空间,所以任何没有前缀的元素都被认为来自该位置。你会发现,命名空间被写为一个URI。这并不是物理位置,而是命名空间的唯一标识符。
第二句是指XAML命名空间。由xmlns:x定义,“x”是一个别名,你可以把它作为该命名空间元素的前缀使用。我们稍后再深入地谈一下。
显然,你也可以在列表上添加自己的命名空间,我们后面会这样做。
XAML Code Behind
在x:Class attribute指向此XAML窗口的隐藏代码。你会发现有“x:”,这意味着Class attribute来自上面提到的XAML命名空间。该attribute的值指向“SimpleStopWatch”命名空间中的“Window1”类。如果你去看Window1.xaml.cs文件,你会看到,这个局部类定义在了这里。
后面的代码就是我们放置C#(或VB)代码的地方,放置的代码包括事件处理器和其他应用程序逻辑。提醒一下,从技术角度来说所有的XAML元素都是可以用代码实现(WinForms应用程序就是用代码来实现所有用户界面的),但如此就舍弃了使用XAML的优势。
Other Starting Attributes
该窗口元素的其他attributes(Title=“Window1” Height=“300” Width=“300”)是窗口类的简单properties(接下来有更多的讲述)。
The Grid Element
最后一个元素是<Grid>元素。我们将尽快填补它。现在,请留意窗口元素只允许一个孩子。这意味着,如果我们想要在我们的Window中包含一个以上的控件,将需要把这些控件包装在某个允许多个孩子的布局控件中。Grid就是这种控件。
XAML概览 1(译自JeremyBytes.com)的更多相关文章
- 第一章 XAML概览
1.1 XAML是什么? XAML是eXtensible Application Markup Language的英文缩写,相应的中文名称为可扩展应用程序标记语言.也就是说在开发一个应用程序时,我们可 ...
- ecos内核概览--bakayi译
http://blog.csdn.net/wangzaiwei2006/article/details/6453423
- 《深入浅出WPF》 学习笔记
<深入浅出WPF> 序言 1. 什么是WPF 2. 为什么要学习WPF 第一章 XAML概览 1. XAML是什么? 2. XAML有哪些优点 第二章 从零起步认识XAML 1. 新 ...
- 【WinRT】【译】【加工】在 XAML 中制作圆形图片
原文:[WinRT][译][加工]在 XAML 中制作圆形图片 原文地址:http://timheuer.com/blog/archive/2015/05/06/making-circular-ima ...
- 【广州.NET社区推荐】【译】Visual Studio 2019 中 WPF & UWP 的 XAML 开发工具新特性
原文 | Dmitry 翻译 | 郑子铭 自Visual Studio 2019推出以来,我们为使用WPF或UWP桌面应用程序的XAML开发人员发布了许多新功能.在本周的 Visual Studio ...
- [译]:Orchard入门——Orchard控制面板概览
原文链接:Getting Around the Dashboard 文章内容基于Orchard 1.8版本 Orchard控制面板用于管理网站.改变外观.添加内容以及控制Orchard功能可用性.成功 ...
- 【译】Visual Studio 2019 中 WPF & UWP 的 XAML 开发工具新特性
原文 | Dmitry 翻译 | 郑子铭 自Visual Studio 2019推出以来,我们为使用WPF或UWP桌面应用程序的XAML开发人员发布了许多新功能.在本周的 Visual Studio ...
- [译]深度神经网络的多任务学习概览(An Overview of Multi-task Learning in Deep Neural Networks)
译自:http://sebastianruder.com/multi-task/ 1. 前言 在机器学习中,我们通常关心优化某一特定指标,不管这个指标是一个标准值,还是企业KPI.为了达到这个目标,我 ...
- [译]Dynamics AX 2012 R2 BI系列-Cube概览
https://msdn.microsoft.com/EN-US/library/dd252604.aspx Cube是一个多维度的结构,它是BI应用开发的基础.本文描述了cube的组成部分, ...
随机推荐
- 用状态矩阵解决有序操作的case爆炸问题(转载)
转自http://qa.baidu.com/blog/?p=167 作者:qabloger 一. 简介 我们在测试中可能都会面对case爆炸问题.有的case组合是无序的,我们可以通过pict[1]组 ...
- ubuntu安装和配置SVN【转】
ubuntu安装和配置SVN 转自:http://www.jb51.net/os/Ubuntu/56394.html 第一步:安装apache2 libapache2-svn subversion ...
- ZOJ Problem Set - 3865 Superbot (bfs)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5477 大牛博客:http://www.cnblogs.com/kylehz/p ...
- 第三方登录(1)OAuth(开放授权)简介及授权过程
3个角色:服务方,开发者,用户 a.用户在第在服务注册填写个人信息, b.服务方开放OAuth, c.开发者在服务方申请第3方登录,在程序中得到令牌后,经用户同意,可得到用户的个人信息. OAuth ...
- 第三篇 从EXCEL电子表格到数据库
一个靠EXCEL电子表格处理各部门业务数据的公司和一个使用一个统一的数据库存储各个部门用到的业务数据并提供大量权限不同的使用界面给用户的公司两者有什么不同呢? EXCEL电子表格是数据和操纵数据的 ...
- mysql中的去除空格函数
(1)mysql replace 函数 语法:replace(object,search,replace) 意思:把object中出现search的全部替换为replace 案例:update `ne ...
- document.body.innerHTML用jquery如何表示
$("body").html('XXXX'); //这个是赋值 $("body").html(); //这个是获取HTML的内容
- Qt之QHeaderView排序
简述 在Windows中我们经常会遇到表头排序,比如可以对文件按照名称.修改日期.类型.大小进行排序,方便我们统一的归类查找. Qt中,我们可以通过点击表头来对QTableView或QTreeView ...
- UVa 1595 (水题) Symmetry
颓废的一个下午,一直在切水题,(ˉ▽ ̄-) 首先如果这些点是对称的话,那么它们的对称轴就是x = m,m是横坐标的平均值. 把这些点放到一个集合里,然后扫描每个点,计算出它关于x = m的对称点,看这 ...
- HDU 1850 (Nim博弈 取胜方案数) Being a Good Boy in Spring Festival
考虑到Bouton定理的证明过程,设n个数的Nim和(异或和)为X,其最高位的1在第k位,那么n个数中一定有个y的第k为也是个1. 将y的数量变为X xor y,那么n的数的Nim和为0,便转为先手必 ...