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的组成部分, ...
随机推荐
- spring springmvc mybatis 整合
环境 apache-tomcat-8.0.33.jdk1.8.0_05 maven Dynamic Web Module 2.5 1.各个xml配置文件的配置 (1)pom.xml 配置清单文件 连接 ...
- linux系统更改目录和文件的权限总结
对于属于你的文件,可以按照自己的需要改变其权限位的设置.在改变文件权限位设置之前,要仔细地想一想有哪些用户需要访问你的文件(包括你的目录).可以使用c h m o d命令来改变文件权限位的设置.这一命 ...
- WIN764位主机的虚拟机安装的xp系统串口添加
WIN764位主机的虚拟机安装的xp系统串口添加 我的电脑安装的是64位的WIN7系统,今天为了验证一个问题,需要用到6410开发板,但在安装USB驱动时无法成功安装,估计是S3C6410的USB驱动 ...
- 【uva】1220 Party at Hali-Bula
1. 题目描述公司里有$n, n \in [1, 200]$个人,他们间的关系构成树状结构.除老板外,每个员工都有唯一一个直属上司,要求从中选择尽量多的人,但是不能同时选择员工和他的直属上司,问最多能 ...
- Android项目真的要去做混淆(加密)处理
以前做项目做是懒得混淆代码,因为要处理各种第三方的混淆东西,像友盟里面加了第三方库,又要特殊处理混淆操作,所以很麻烦,也懒得去做混淆操作,so 你懂的:但今天我用一个反编译工具,发现一个很可怕的事情 ...
- Oracle中添加视图
CREATE or REPLACE view view_will as select college.collegeid,mat.stuid,sum(score.chinese+score.ma ...
- 使用ajaxfileupload插件提示Uncaught TypeError:has no method 'handleError'
最近使用ajaxfileupload插件上传文件时,后台正常运行时,可以正常使用:当后台出现异常时,上传后没有任何反应,也无任何返回信息,使用chrome查看时,发现ajaxfileupload插件报 ...
- IE6下margin出现双边距
在IE6下,块元素有浮动和横向margin的时候,横向的margin值会被放大成两倍 解决方法:添加display:inline; eg:下面的例子在IE6下会有两倍边距 <style> ...
- UVa 10474 Where is the Marble
题意:给出一列数,先排序,再查找学习了sort函数,lower_bound函数sort:可以给任意对象排序(包括自己定义的)(前提是定义好了‘<’运算符)lower_bound:查找大于或者等于 ...
- PHP中括号“{}”的3个作用
1,将多个独立语句合并为一个复合语句,例如“if .... else ....”中推荐如此使用. 2,在变量的间接引用中进行定界,避免歧义.例如“${$my_var[8]}”与“${$my_var}[ ...