XAML 是微软开发的基于 XML 的声明式 UI 标记语言,用于定义 .NET 应用界面结构与外观;它非编程语言,不处理业务逻辑,仅描述控件、属性、布局、样式、动画和数据绑定,对应强类型 .NET 类,需单一根元素,WPF 与 UWP 虽语法相似但运行时、控件集及特性互不兼容。

XAML 是一种基于 XML 的声明式标记语言,全称是 eXtensible Application Markup Language(可扩展应用程序标记语言),由微软开发,专用于定义 .NET 应用程序的用户界面结构和外观。
它不是编程语言,而是界面描述语言
XAML 本身不处理业务逻辑或流程控制,它的核心任务是清晰、直观地描述 UI 元素:比如窗口、按钮、文本框、布局容器,以及它们的属性、嵌套关系、样式、动画和数据绑定方式。你可以把它理解为“UI 的蓝图”——用文本写清楚界面上有什么、长什么样、怎么排布。
- 所有 XAML 元素都对应 .NET 程序集中的真实类型(如
Button对应System.Windows.Controls.Button),所以它是强类型的、可编译的,不是纯解释型的 HTML 那类标记。 - 它支持命名空间机制(如
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"),用来准确映射到不同功能的控件库。 - 一个 XAML 文件必须且只能有一个根元素,常见的是
Window(WPF)、UserControl或Page;UWP 中还常用App作为应用级根。
WPF 和 UWP 都用 XAML,但不是同一套 XAML
虽然语法看起来相似,但 WPF 和 UWP 使用的是不同版本、不同运行时支撑的 XAML 实现,不能混用。
对于一个刚进入PHP 开发大门的程序员,最需要的就是一本实用的开发参考书,而不仅仅是各种快速入门的only hello wold。在开发的时候,也要注意到许多技巧和一些“潜规则”。PHP是一门很简单的脚本语言,但是用好它,也要下功夫的。同时,由于PHP 的特性,我一再强调,最NB 的PHP 程序员都不是搞PHP 的。为什么呢?因为PHP 作为一种胶水语言,用于粘合后端 数据库和前端页面,更多需
- WPF XAML 运行在 .NET Framework 或 .NET Core/.NET 5+ 的 WPF 框架上,依赖 Desktop Window Manager(DWM)和 milcore 渲染引擎,支持丰富的自定义模板、触发器(Trigger)、像素级控制,适合复杂桌面软件。
- UWP XAML 运行在 WinRT 平台上,底层使用 DirectComposition 和 DirectX 12,强调响应式布局、触控优化和沙盒安全模型;其 XAML 解析器更严格,部分 WPF 特性(如某些依赖属性行为、样式继承规则)在 UWP 中不可用或表现不同。
- 两者共用基础语法(如
),但控件集合、事件模型、资源系统、动画语法细节都有差异。例如 UWP 的RelativePanel在 WPF 中没有直接对应项;WPF 的TextBlock.TextWrapping属性在 UWP 中叫TextWrapping,但默认值和行为略有出入。
它和后台代码的关系很明确
XAML 文件通常配对一个“代码隐藏”文件(如 MainWindow.xaml.cs),二者通过 partial class 关联。XAML 负责静态结构与声明式配置,C#(或其他 .NET 语言)负责运行时逻辑、数据处理、事件响应。
- 事件可以直连方法名:
Click="Button_Click",点击时自动调用同名 C# 方法。 - 数据绑定用
{Binding}语法,配合INotifyPropertyChanged或依赖属性,实现 UI 与数据自动同步。 - 逻辑完全不用 XAML 也能做——你完全可以只用 C# 创建整个 WPF 界面,但那样会失去可维护性、设计协作性和声明式表达的优势。
基本上就这些。XAML 的价值不在炫技,而在于把界面从代码中解耦出来,让结构更清晰、团队分工更自然、视觉与逻辑各司其职。









