XAML全称为Extensible Application Markup Language,即可扩展应用程序标记语言,是微软推出的基于XML的声明式标记语言,主要服务于WPF、Xamarin等.NET生态下的界面开发场景,开发者可以通过XAML直接描述界面的布局、控件属性以及控件之间的层级关系,不需要编写大量C#代码来构建界面元素。

XAML的核心特性
XAML最大的特点是声明式编程,开发者只需要描述想要实现的界面效果,框架会自动完成界面的渲染和逻辑绑定。它和后台代码是分离的,界面逻辑写在XAML文件中,业务逻辑写在对应的C#代码后置文件中,这样可以让界面开发和维护更加高效。
XAML支持属性赋值、事件绑定、资源引用、样式定义等多种功能,同时可以和C#代码无缝交互,比如在XAML中定义的控件,可以在C#代码中直接通过名称访问其属性和方法。
WPF中的XAML基础用法
WPF是Windows平台下的桌面应用开发框架,XAML是WPF界面开发的核心。下面是一个简单的WPF窗口XAML示例,包含一个按钮和一个文本块:
<Window x:Class="WpfApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="XAML入门示例" Height="300" Width="400">
<Grid>
<StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
<TextBlock x:Name="ShowText" Text="初始文本" FontSize="16" Margin="0,0,0,10"/>
<Button Content="点击修改文本" Width="120" Height="30" Click="Button_Click"/>
</StackPanel>
</Grid>
</Window>
对应的C#代码后置文件内容如下,实现点击按钮修改文本块内容的功能:
using System.Windows;
namespace WpfApp
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
ShowText.Text = "按钮被点击了";
}
}
}
Xamarin中的XAML基础用法
Xamarin是用于跨平台移动应用开发的框架,同样使用XAML来构建界面,语法和WPF的XAML类似,但是控件类型和属性会根据移动平台的特点有所调整。下面是一个简单的Xamarin页面XAML示例:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="XamarinApp.MainPage">
<StackLayout Padding="20" VerticalOptions="Center">
<Label x:Name="MobileLabel" Text="移动端初始文本" FontSize="18" HorizontalOptions="Center"/>
<Button Text="点击修改文本" HorizontalOptions="Center" Clicked="MobileButton_Click"/>
</StackLayout>
</ContentPage>
对应的C#代码后置文件实现如下:
using Xamarin.Forms;
namespace XamarinApp
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private void MobileButton_Click(object sender, System.EventArgs e)
{
MobileLabel.Text = "移动端按钮被点击了";
}
}
}
XAML入门注意事项
- XAML文件的标签必须严格闭合,和XML语法规则一致,否则会导致编译错误。
- 控件的
x:Name属性用于给控件命名,方便在C#代码中访问,命名需要符合C#的标识符规则。 - 不同框架下的XAML命名空间有区别,WPF和Xamarin的默认命名空间不同,不要混用。
- 事件绑定的方法名需要和C#代码后置文件中的方法名完全一致,否则会触发运行时错误。
常见问题解答
XAML只能用于WPF和Xamarin吗
目前XAML主要应用于WPF、Xamarin、UWP等微软生态的开发框架,部分第三方的.NET界面框架也会支持XAML语法,但是核心应用场景还是上述几个官方框架。
XAML和HTML有什么区别
两者都是标记语言,但是XAML是强类型的,每个标签都对应一个具体的类,属性对应类的属性;HTML是弱类型的,主要用于网页内容描述,没有和后台代码的直接绑定关系,两者的应用场景和设计目标完全不同。