Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >UWP基础教程 - XAML开篇

UWP基础教程 - XAML开篇

作者头像
陈仁松
发布于 2018-03-20 08:30:33
发布于 2018-03-20 08:30:33
1.9K00
代码可运行
举报
文章被收录于专栏:陈仁松博客陈仁松博客
运行总次数:0
代码可运行

XAML是英文Extensible Application Markup Language的缩写,中文可以称为“可扩展应用程序标记语言”,是基于Extensive Markup Language(XML)可扩展标记语言,在Windows 10 UWP、Windows 8、Windows Phone、Silverlight以及WPF技术框架下都可以使用XAML的语法作为应用UI界面的开发。

XAML简化了创建UI的过程,使UI编程更加简单明了,在使用XMAL的项目中,以".xaml"作为文件扩展名。每个XAML页面都具有一个后台代码文件xaml.cs文件来控制页面逻辑处理,这就是微软典型的Code-Behind模式的编程方式,这一机制将用户界面设计和后台代码设计分割,这意味着项目组的UI同学可以使用Blend for Visual Studio进行XAML用户界面设计,同时后台代码开发人员可在Visual Studio中共享该XAML文件,并同时设计其后台代码。

根据微软Microsoft Domain-Specific Languages描述

Xaml, the eXtensible Application Markup Language, is a system for representing structured information. This specification defines three aspects of Xaml: ·The Xaml Schema Information Set - a model for defining a particular Xaml vocabulary. ·The Xaml Information Set - a model for describing the information in a Xaml instance. ·The process for converting an XML [XML] document into the corresponding Xaml Information Set, as directed by one or more Xaml Schema Information Sets. This specification does not define any particular Xaml vocabulary.

Xaml, the eXtensible Application Markup Language, is a system for representing structured information. This specification defines two abstract information models: the Xaml Schema Information Set model, and the Xaml Information Set model. The Xaml Information Set (‘Xaml Infoset’ for short) defines the structure of information that a Xaml instance can represent. The Xaml Schema Information Set allows specific Xaml vocabularies to be defined. This specification also defines a set of rules for transforming an XML document into a Xaml Information Set. XML is a common format for Xaml. (The term “Xaml Document” refers to an XML document that represents a Xaml Information Set.) But while this specification does not define any other representations, any physical representation may be used as long as it can represent the information in the Xaml Information Set. This first section of the specification describes the roles of the information sets, how they relate to applications that use Xaml, and how the transformation rules come into play.

XAML基于XML格式,同时也继承了大量XML的概念,其中最基础的就是Element(元素)的定义和Property(属性)的使用。下图演示了一个XAML基础元素的使用以及结构,是不是和XML很相似。所以,如果你熟悉XML,其实已经具备XAML语法基础,那么接下来学习XAML的过程将会事半功倍。

首先我们来看一段UWP项目空白页面的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<Page
    x:Class="UWPXaml.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:UWPXaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">
    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    </Grid>
</Page>

上面代码声明了若干个命令空间,xmlns特性是XML中的特殊属性,专门用来声明命名空间。一旦声明了命名空间,在该文档任何地方都可以使用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    xmlns:local="using:UWPXaml"

表示在该XAML里可以通过local标识符来使用UWPXaml控件下的控件或者其他类

大家可能会问那么Grid的命名空间是什么呢?为什么没有标识符前缀?这里我们来看下两个特别的命名空间

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

这两个命名控件在创建所有Win10的UWP应用都会使用到, http://schemas.microsoft.com/winfx/2006/xaml/presentation是UWP的核心命名空间。它包含了大部分用来构建UI的控件,主要包含Windows.UI.Xaml的控件,该命名空间的声明没有前缀,所以它也成为该文档的默认命名空间,所以没有前缀的元素都是自动位于该命名空间下,Grid元素就处于该命名空间下。 http://schemas.microsoft.com/winfx/2006/xaml是XAML的命名空间,包含各种XAML的实用特性,声明以x作为前缀,常用的x.Name就是使用该命名空间来实现的。

定义

描述

x:Key

为 XAML ResourceDictionary 中的每个资源设置一个唯一的用户定义密钥。该密钥的令牌字符串是 StaticResource 标记扩展的参数,你可以在以后使用此密钥在应用 XAML 的其他位置检索其他 XAML 用法中的 XAML 资源。

x:Class

为 XAML 页面提供代码隐藏的类指定代码命名空间和代码类名称。这可为构建你的应用时通过构建操作创建或加入的类命名。这些构建操作支持 XAML 标记编译器,并在编译应用时,将你的标记和代码隐藏文件组合到一起。你必须具有此类,才能支持对 XAML 页面实现代码隐藏。还需要 x:Class,才能使你的 XAML 内容在默认 Windows 运行时激活模型中初始化为 Window.Content。

x:Name

在处理 XAML 中定义的对象元素后,为运行时代码中存在的实例指定一个运行时对象名。你可以将在 XAML 中设置 x:Name 看作是在代码中声明命名变量。稍后你会了解,这是将 XAML 加载为 Windows 运行时应用的一个组件时发生的实际情况。注意  FrameworkElement.Name 是框架中的一个类似属性,并非所有元素都支持它。因此,当 FrameworkElement.Name 在该元素类型上不受支持时,你可以将 x:Name 用于元素标识。

x:Uid

标识某些元素,应将本地化后的资源用于该元素的一些属性值。有关如何使用 x:Uid 的详细信息,请参阅快速入门:翻译 UI 资源。

XAML 固有类型

当属性或资源需要时,这些类型可以为简单的值类型指定值。这些固有类型与通常定义为每个编程语言固有定义的一部分的简单值类型相对应。例如,你可能需要一个表示 true 布尔值的对象,以便在 ObjectAnimationUsingKeyFrames 情节提要视觉状态中使用。对于 XAML 中的该值,可将 x:Boolean 固有类型用作对象元素,例如 <x:Boolean>True</x:Boolean>

XAML命名空间的概念其实和C#代码中的Using类似,XAML的命名空间使得XAML解析器能够准确找到指定的类进行渲染。

关于XAML命名空间就介绍到这里,下一篇将会介绍XAML对象元素和属性。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【愚公系列】2023年09月 WPF控件专题 XAML介绍
WPF(Windows Presentation Foundation)是微软推出的一种基于.net框架的图形用户界面技术,它使用XAML(eXtensible Application Markup Language)作为UI的描述语言。XAML是一种基于XML的标记语言,用于描述WPF应用程序的用户界面、控件、布局、样式和数据绑定。XAML可以将UI元素和代码分离,使得设计人员和开发人员能够分别负责UI和逻辑的开发,从而提高开发效率。
愚公搬代码
2023/09/16
4260
WPF自学入门(一)WPF-XAML基本知识
1、XAML是派生自XML的可扩展应用程序标记语言(Extensible Application Markup Language)由微软创造应用在WPF,Silverlight等开发技术中。
黄昏前黎明后
2019/09/11
2.6K0
WPF自学入门(一)WPF-XAML基本知识
【愚公系列】2022年10月 WPF控件专题XAML介绍
XAML是eXtensible Application Markup Language的英文缩写,相应的中文名称为可扩展应用程序标记语言,它是微软公司为构建应用程序用户界面而创建的一种新的描述性语言。XAML提供了一种便于扩展和定位的语法来定义和程序逻辑分离的用户界面,而这种实现方式和ASP.NET中的"代码后置"模型非常类似。XAML是一种解析性的语言,尽管它也可以被编译。它的优点是简化编程式上的用户创建过程,应用时要添加代码和配置等。
愚公搬代码
2022/12/01
3630
UWP ListView数据绑定
在制作UWP个人项目时需要用到数据绑定,网上的教程大都不全,特此记录下自己使用的方法。
DearXuan
2022/01/19
1.5K0
UWP ListView数据绑定
让你编写的控件库在 XAML 中有一个统一的漂亮的命名空间(xmlns)和命名空间前缀
发布于 2018-05-22 13:21 更新于 2018-09-01 00:04
walterlv
2018/09/18
2.3K0
微软XAML Studio - WPF, UWP, Xamarin等技术开发者的福音
最近在继续倒腾WPF的项目,继续使用Caliburn.Micro和Xceed来堆代码。每次调试xaml上的binding,都有种要疯的赶脚。
Enjoy233
2021/12/23
1.3K0
微软XAML Studio - WPF, UWP, Xamarin等技术开发者的福音
微软XAML Studio - WPF, Sliverlight, Xamarin, UWP等技术开发者的福音
最近又在继续倒腾WPF的项目,继续使用Caliburn.Micro和Xceed来堆代码。每次调试xaml上的binding,都有种要疯的赶脚。
Enjoy233
2019/03/21
1.1K0
微软XAML Studio - WPF, Sliverlight, Xamarin, UWP等技术开发者的福音
WPF入门到放弃(二) | 初识XAML
WPF也是我今年刚开始深入去了解,看了不少的学习视频和书籍,受剑神Python入门到放弃的启发,想把这段时间学习内容做个总结,一是因为我相信技术总是需要不断的总结与练习才能有所进步,二是希望帮助初学者对WPF有个初步的了解,大家一起探讨学习进步。
剑指工控
2021/11/09
1.8K0
win10 uwp 使用 XamlTreeDump 获取 XAML 树元素内容
本文来安利大家 XamlTreeDump 库,通过这个库可以将 XAML 树上的元素转换为 json 字符串,可以用来进行 UI 单元测试
林德熙
2021/05/11
4690
win10 uwp 使用 XamlTreeDump 获取 XAML 树元素内容
WPF 引用 UWP 控件 不打包为 MSIX 分发的方法
按照微软的官方文档,大部分的文档都会说如果用了 XAML Islands 等技术的时候,需要新建一个打包项目,将 WPF 应用打包为 msix 等才可以进行分发和使用。但是实际上不打包也可以,此时可以和此前的 Win32 应用一样的分发方式进行分发,可以支持到 Win7 系统,当然了在 Win7 系统上可用不了 UWP 的控件,但是至少应用软件自身可以在 Win7 继续运行的。可以通过判断系统版本决定功能是否开放,如是 Win10 版本,那么开放 UWP 控件部分的使用
林德熙
2021/12/23
7600
C#的GUI 应用程序开发
图形用户界面(GUI)应用程序是与用户交互的直观方式。在C#中,有多种工具和框架可用于创建GUI应用程序,包括Windows Presentation Foundation (WPF)、Windows Forms和Universal Windows Platform (UWP)。本文将深入探讨这些框架的核心概念、特点、使用场景及如何使用它们来构建GUI应用程序。
Michel_Rolle
2024/10/09
2.4K0
win10 uwp 自定义控件入门
本文告诉大家如何在 UWP 使用 CustomControl 自定义控件,在 UWP 的自定义控件的中文翻译是模板化控件,通过自定义控件可以完全控制整个控件的布局和渲染。
林德熙
2022/08/12
9030
WPF 使用 Microsoft.Toolkit.Wpf.UI.Controls 的 InkCanvas 时加上背景色和按钮方法
本文来告诉大家如何在 WPF 应用 HOST 了 UWP 的 InkCanvas 控件时,给 InkCanvas 控件设置背景色,加上按钮等业务功能的实现方法
林德熙
2021/08/23
2.3K0
[UWP 自定义控件]了解模板化控件(1):基础知识
UWP允许开发者通过两种方式创建自定义的控件:UserControl和TemplatedControl(模板化控件)。这个主题主要讲述如何创建和理解模板化控件,目标是能理解模板化控件常见的知识点,并且可以创建扩展性良好的模板化控件。
dino.c
2019/01/18
7020
[UWP 自定义控件]了解模板化控件(1):基础知识
dotnet 使用 ShowMeTheXAML 显示 WPF 的 XAML 控件内容
本文来告诉大家一个好用的控件库,这个控件库可以方便用在自己编写示例项目中使用。使用 ShowMeTheXAML 控件库可以将某段 XAML 内容作为字符串文本内容显示出来,方便让其他开发者看到界面以及对应的内容
林德熙
2021/04/02
1.1K0
dotnet 使用 ShowMeTheXAML 显示 WPF 的 XAML 控件内容
剖析XAML语言
在wpf中,UI部分使用xaml语言来编写,xaml语言是由xml语言派生而来的语言,所以在xaml中我们可以看到很多熟悉的特点:它也是使用标签构建页面,一个标签就对应一个对象,标签与标签之间或为并列关系,或为包含关系。
宿春磊Charles
2021/11/05
6430
WPF使用自定义控件UserControl
大佬们基本上都在讲怎么自定义控件,却怎么也没有说明怎么使用这些个自定义的控件,然后看完教程的本小白只能干瞪眼..可能大佬们不屑这样基础的东西 首先新建一个用户控件UserControl1.xaml,这个会用几下VS的应该都没有难度。
zls365
2021/10/19
1.9K0
张高兴的 UWP 开发笔记:手机状态栏 StatusBar
  UWP 有关应用标题栏 TitleBar 的文章比较多,但介绍 StatusBar 的却没几篇,在这里随便写写。状态栏 StatusBar 用法比较简单,花点心思稍微设计一下,对应用会是个很好的点缀。   说明一下,当应用运行在 PC 上时我们叫 TitleBar ,运行在 Mobile 上时我们叫 StatusBar ,这是两个不同的玩意儿。   在使用 StatusBar 之前,你需要在项目的引用里添加 Windows Mobile Extensions for the UWP ,并且引用 Wind
张高兴
2018/05/18
7110
win10 uwp xaml 兼容多个版本条件编译
如果开发的程序需要在多个版本运行,又需要使用最新版本的特性,那么请看本文。 本文告诉大家如何设置 xaml 的条件编译。
林德熙
2018/09/19
1K0
win10 uwp xaml 兼容多个版本条件编译
UWP编程基础
UWP即windows通用平台,用于创建可以运行在所有Windows10以上设备的应用程序。与传统exe应用比起来,UWP应用拥有更严格的权限系统,更美观的操作界面,更强大的自定义控件以及更方便的自适应布局。
DearXuan
2022/01/19
5600
UWP编程基础
推荐阅读
相关推荐
【愚公系列】2023年09月 WPF控件专题 XAML介绍
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验