(文章译自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)的更多相关文章

  1. 第一章 XAML概览

    1.1 XAML是什么? XAML是eXtensible Application Markup Language的英文缩写,相应的中文名称为可扩展应用程序标记语言.也就是说在开发一个应用程序时,我们可 ...

  2. ecos内核概览--bakayi译

    http://blog.csdn.net/wangzaiwei2006/article/details/6453423

  3. 《深入浅出WPF》 学习笔记

    <深入浅出WPF> 序言 1. 什么是WPF    2. 为什么要学习WPF 第一章 XAML概览 1. XAML是什么? 2. XAML有哪些优点 第二章 从零起步认识XAML 1. 新 ...

  4. 【WinRT】【译】【加工】在 XAML 中制作圆形图片

    原文:[WinRT][译][加工]在 XAML 中制作圆形图片 原文地址:http://timheuer.com/blog/archive/2015/05/06/making-circular-ima ...

  5. 【广州.NET社区推荐】【译】Visual Studio 2019 中 WPF & UWP 的 XAML 开发工具新特性

    原文 | Dmitry 翻译 | 郑子铭 自Visual Studio 2019推出以来,我们为使用WPF或UWP桌面应用程序的XAML开发人员发布了许多新功能.在本周的 Visual Studio ...

  6. [译]:Orchard入门——Orchard控制面板概览

    原文链接:Getting Around the Dashboard 文章内容基于Orchard 1.8版本 Orchard控制面板用于管理网站.改变外观.添加内容以及控制Orchard功能可用性.成功 ...

  7. 【译】Visual Studio 2019 中 WPF & UWP 的 XAML 开发工具新特性

    原文 | Dmitry 翻译 | 郑子铭 自Visual Studio 2019推出以来,我们为使用WPF或UWP桌面应用程序的XAML开发人员发布了许多新功能.在本周的 Visual Studio ...

  8. [译]深度神经网络的多任务学习概览(An Overview of Multi-task Learning in Deep Neural Networks)

    译自:http://sebastianruder.com/multi-task/ 1. 前言 在机器学习中,我们通常关心优化某一特定指标,不管这个指标是一个标准值,还是企业KPI.为了达到这个目标,我 ...

  9. [译]Dynamics AX 2012 R2 BI系列-Cube概览

    https://msdn.microsoft.com/EN-US/library/dd252604.aspx     Cube是一个多维度的结构,它是BI应用开发的基础.本文描述了cube的组成部分, ...

随机推荐

  1. ubuntu启动eclipse时出错cannot open display

    由于要学习hadoop,就在ubuntu下创建了一个hadoop用户,但是eclipse是在naomi用户下装的,在root和naomi用户下都能正常启动,但是一旦切换到hadoop用户,试着启动ec ...

  2. python中的列表(list) 切片详解

    1.切片: 通过指定下标的方式来获得某一个数据元素,或者通过指定下标范围来获得一组序列的元素,这种访问序列的方式叫做切片.    访问某一个数据元素的的语法如下:    sequence[index] ...

  3. enable c++11 in autoconf in fucking gnu auto tools

    configure.ac => CXXFLAGS="$CXXFLAGS -std=c++14" set CXXFLAGS  => std=c++14 well done ...

  4. MySQL工具:管理员必备的10款MySQL工具

    MySQL是一个复杂的的系统,需要许多工具来修复,诊断和优化它.幸运的是,对于管理员,MySQL已经吸引了很多软件开发商推出高品质的开源工具来解决MySQL的系统的复杂性,性能和稳定性,其中大部分是免 ...

  5. 《OD学hadoop》第一周0626

    一.磁盘管理 Linux添加新硬盘.分区.格式化.自动挂载 http://lxsym.blog.51cto.com/1364623/321643 给Linux系统新增加一块硬盘 http://www. ...

  6. 用 eclipse ndk 编译 cocos2d-x for Android

    Android 环境搭建不详述,,可以google,,, 我用的coco2dx 是 2.14 ,2.14 用 create_project.py 脚本创建工程,Python环境配置也是很简单,这里了不 ...

  7. How to use 'crontab' command on bitnami

    You can edit the cron file using the following command: $ sudo crontab -e You can add a new line lik ...

  8. jQuery_效果(滑动)

    1.jQuery slideDown() 方法(用于向下滑动元素) 语法:$(selector).slideDown(speed,callback); 可选的 speed 参数规定效果的时长.它可以取 ...

  9. Machine Learning for hackers读书笔记(六)正则化:文本回归

    data<-'F:\\learning\\ML_for_Hackers\\ML_for_Hackers-master\\06-Regularization\\data\\' ranks < ...

  10. xmlWriter 以UTF-8格式写xml问题

    dom4j中的XMLWriter提供以下几种构造方法: XMLWriter() XMLWriter(OutputFormat format) XMLWriter(OutputStream out) X ...