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的组成部分, ...
随机推荐
- weka数据挖掘拾遗(三)----再谈如果何生成arff
前一阵子写过一个arff的随笔,但是写完后发现有些啰嗦.其实如果使用weka自带的api,生成arff文件将变成一件很简单的事儿. 首先,可以先把特征文件生成csv格式的.csv格式就是每列数据都用逗 ...
- Android之开发杂记(三)
一.popup 弹出框 在onCreate中创建时异常 Unable to add window -- token null is not valid; is your activity runnin ...
- js中substr与substring的用法与区别
substrsubstr(start,length)表示从start位置开始,截取length长度的字符串. var src="images/pic_1.png";alert(sr ...
- Android 内存相关 onTrimMemory,onLowMemory,MemoryInfo()
参考: Android Application生命周期学习 Android中如何查看内存(上) Android OnLowMemory和OnTrimMemory OnLowMemory OnLowMe ...
- js 监听监键盘动作
浏览器firefoxfunctionoperamicrosoftmozilla 转载自:http://geelong.javaeye.com/blog/810054 主要分四个部分第一部分:浏览器的按 ...
- hdu 5091(线段树+扫描线)
上海邀请赛的一道题目,看比赛时很多队伍水过去了,当时还想了好久却没有发现这题有什么水题的性质,原来是道成题. 最近学习了下线段树扫描线才发现确实是挺水的一道题. hdu5091 #include &l ...
- 为Gradle添加tomcat插件,调试WEB应用
Gradle提供了不输于maven的依赖管理 提供了强大的test功能,输出优美的测试报告 并且提供war插件,使用内置的jetty调试WEB应用 因为博主偏偏钟情于tomcat,所以希望使用tomc ...
- [ionic开源项目教程] - 第1讲 前言,技术储备,环境搭建,常用命令
前言 这是一个系列文章,将持续更新到项目完结,从环境搭建开始讲解,包括实战开发中遇到的各种问题的解决方案,都将毫无保留的分享给大家. 技术储备 开始本项目之前,请确保自己对以下技术点都有所了解. ht ...
- UVa 10420 List of Conquests
题意就是有N个pl妹子,然后每行第一个单词是妹子的国籍,后面是妹子的名字. 你的任务就是统计相同国籍妹子的个数,然后按字母表顺序输出. 我首先把所有的国籍都读入,然后用qsort()按字母表顺序排序. ...
- 51nod1346 递归
我终于知道我有多么蠢了...推规律根本不带我这么推的...跟51nod那场比赛的傻逼B题一样,想都不想想就打表找规律...智障啊找规律也要按照基本法! //f[1][2]=a[1][2] f[2][1 ...