C#WPF的XAML的语法详谈和特性
WPF的XAML(eXtensible Application Markup Language)是一种基于XML的标记语言,用于在.NET框架中定义和描述用户界面。XAML提供了一种声明性的方式来构建应用程序的UI元素,包括窗口、控件、布局、样式、动画和数据绑定等。
XAML的对象元素:
对象元素通常声明类型的实例。 该类型在将 XAML 用作语言的技术所引用的程序集中定义
格式<创建实例的类型名></创建实例的类型名>或者<创建实例的类型名 />
对象元素指的是用来定义和初始化对象的XML标签。这些元素可以是控件、布局容器、数据绑定对象等。
<Window x:Class="xaml训练.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:xaml训练"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<StackPanel>
<Button Content="Button 1"></Button>
<Button Content="Button 2" />
</StackPanel>
</Grid>
</Window>
一些常用的XAML的对象元素:
-
控件对象:
<Button Content="Click Me" />
-
布局容器:
<StackPanel> <Button Content="Button 1" /> <Button Content="Button 2" /> </StackPanel>
-
数据绑定对象:
<TextBlock Text="{Binding Path=Name}" />
-
属性设置:
<Button Content="Click Me" Width="100" Height="30" />
-
事件处理:
<Button Content="Click Me" Click="OnButtonClick" />
-
资源定义:
<Window.Resources> <SolidColorBrush x:Key="MyBrush" Color="Red" /> </Window.Resources>
-
样式定义:
<Window.Resources> <Style TargetType="Button"> <Setter Property="Background" Value="Blue" /> </Style> </Window.Resources>
-
自定义控件:
<local:MyCustomControl />
XAML的特性语法(属性)
-
设置属性值:
<Button Content="Click Me" Width="100" Height="30" />
-
绑定属性到数据源:
<TextBox Text="{Binding Path=UserName}" />
-
设置资源引用:
<Button Content="Click Me" Background="{StaticResource MyBrush}" />
-
使用类型转换器:
<Label Content="{Binding Path=Age, Converter={StaticResource IntegerToStringConverter}}" />
-
设置事件处理器:
<Button Content="Click Me" Click="OnButtonClick" />
-
使用附加属性:
<TextBox TextOptions.TextFormattingMode="Display" />
-
设置样式和模板:
<Button Content="Click Me" Style="{StaticResource MyButtonStyle}" />
-
使用命令:
<Button Content="Click Me" Command="{Binding Path=MyCommand}" CommandParameter="Parameter" />
-
设置动画:
<Button Content="Click Me"> <Button.Triggers> <EventTrigger RoutedEvent="Button.Click"> <BeginStoryboard> <Storyboard> <DoubleAnimation Storyboard.TargetProperty="Opacity" From="1.0" To="0.0" Duration="0:0:1" /> </Storyboard> </BeginStoryboard> </EventTrigger> </Button.Triggers> </Button>
-
使用数据模板:
<ListBox ItemsSource="{Binding Path=Items}"> <ListBox.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Path=Name}" /> </DataTemplate> </ListBox.ItemTemplate> </ListBox>
XAML的语法细节:
a. 标签的本质是一个类(对象)。
b. 标签:双标签(非空标签,闭合标签)、单标签(空标签)。
c. XAML中俗称的标签,官方称对象元素。
d. 属性只出现在开始标签中。俗称的属性官方称特性语法。
e. 内容区:指开始标签和结束标签之间的信息。不仅仅只包含文本,也可能包含子标签。
f. 标签的内容区本质上也是属性。
g. XAML 区分大小写。属性之间的空白不可少。空白也有利于XAML代码格式化。
h. 命名空间及前缀,自定义前缀。
i. 事件,路由事件及代码隐藏(CodeBehind代码在后面)。事件本质上也是一种属性。路由:本质上就是一个路径,指明到某个地方的一个路径。
j. 命名元素及附加属性。命名元素就是给标签启个名字,名字不建议(不能)重复。附加属性就是标签本来没有的属性,由于和其他标签结合起来使用时,其他标签附加到此标签的属性。
k. 标记扩展(重点,难点),绑定语法,将来再讲MVVM框架时再谈。
XAML的一些关键特性:
1.声明性语法:XAML使用XML标记来声明UI元素,这使得界面设计和布局可以独立于代码逻辑。
2.控件和属性:XAML允许你定义各种控件(如按钮、文本框等)及其属性(如宽度、高度、颜色等)。
3.数据绑定:XAML支持数据绑定,可以将UI元素与数据源绑定,实现数据的自动更新和交互。
4.资源和样式:XAML允许定义资源(如颜色、样式等)和样式,以实现UI元素的一致性和可重用性。
5.事件绑定:XAML支持将事件处理器绑定到UI元素的事件上,例如将按钮的点击事件绑定到一个方法。
6.模板:XAML可以定义控件模板,自定义控件的外观和行为。
7.布局:XAML提供了多种布局控件,如Grid、StackPanel、WrapPanel等,用于组织和排列UI元素。
8.动画和交互:XAML支持定义动画和交互效果,增强用户体验。
9.可扩展性:XAML是可扩展的,可以定义自定义控件和类型。
10.分离关注点:XAML允许UI设计和逻辑代码分离,提高开发效率和可维护性。
一个简单的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="MainWindow" Height="350" Width="525">
<Grid>
<Button Content="Click Me" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10"/>
</Grid>
</Window>
Window
元素定义了一个窗口,Grid
元素作为布局控件,Button
元素定义了一个按钮。x:Class
属性将XAML文件与后台代码(Code-behind)关联起来。
XAML的设计哲学是将界面设计和逻辑代码分离,使得设计师可以专注于界面设计,而开发者可以专注于逻辑实现。这种分离也有助于提高应用程序的可维护性和可测试性。