目录
具有子元素的对象示例:StackPanel包含Textblock作为子元素
前言:
使用WPF时遇到的事情之一就是XAML。XAML代表可扩展应用程序标记语言。它是一种基于XML的简单声明性语言。
·在XAML中,很容易创建、初始化和设置具有层次关系的对象的属性。
·它主要用于设计GUI,但也可用于其他目的,例如在Workflow Foundation中声明工作流。
基本语法
当您创建新的WPF项目时,您将在MainWindow.xaml中默认遇到一些XAML代码,如下所示。
<Window x:Class = "Resources.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>
</Grid>
</Window>
上面的XAML文件包含不同类型的信息。下表简要说明了各个信息的作用。信息
信息 | 描述 |
<Window | 它是跟的开始对象元素或容器 |
x:Class = "Resources.MainWindow" | 它是一个分部类声明,它将标记连接到后面定义的分部类代码 |
xmlns = "http://schemas.microsoft.com/win fx/2006/xaml/presentation" | 映射WPF客户端/框架默认XAML命名空间 |
xmlns:x = "http://schemas.microsoft.com/w infx/2006/xaml" | XAML语言的XAML命名空间,将其映射到x:前缀 |
> | 跟对象元素结束 |
<Grid> </Grid> | 它是一个空网格对象的开始和结束标签 |
</Window> | 关闭对象元素 |
XAML语法规则几乎与XML类似。如果您查看XAML文档,您会发现它实际上是一个有效的XML文件,但XML文件不一定是XAML文件。这是因为在XML中,属性的值必须是字符串,而在XAML中,它可以是不同的对象,这称为属性元素语法。
·Object元素的语法以左尖括号(<)开头,后跟对象的名称,例如按钮
·定义该对象元素的一些属性
·Object元素必须以正斜杠(/)结束,后跟直尖括号(>)。
没有子元素的简单对象示例
<Button/>
具体某些属性的对象元素示例
<Button Content = "Click Me" Height = "30" Width = "60" />
定义属性的替代语法示例(属性元素语法)
<Button>
<Button.Content>Click Me</Button.Content>
<Button.Height>30</Button.Height>
<Button.Width>60</Button.Width>
</Button>
具有子元素的对象示例:StackPanel包含Textblock作为子元素
<StackPanel Orientation = "Horizontal">
<TextBlock Text = "Hello"/>
</StackPanel>
为什么在WPF中使用XAML
XAML不仅是WPF最广为人知的功能,而且也是最容易被误解的功能之一。如果你接触过WPF,那么你一定听说XAML;但请注意以下XAML的两个鲜为人知的事实 -
·WPF不需要XAML
·XAML不需要WPF
它们实际上是可分离的技术,为了了解这是怎么回事,让哦我们看一个简单的示例,其中使用XAML中的一些属性创建按钮。
<Window x:Class = "WPFXAMLOverview.MainWindow"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
Title = "MainWindow" Height = "350" Width = "604">
<StackPanel>
<Button x:Name = "button" Content = "Click Me" HorizontalAlignment = "Left"
Margin = "150" VerticalAlignment = "Top" Width = "75" />
</StackPanel>
</Window>
如果您选择不在 WPF 中使用 XAML,那么您也可以使用过程语言实现相同的 GUI 结果。 让我们看一下同一个示例,但这次我们将用 C# 创建一个按钮。
using System.Windows;
using System.Windows.Controls;
namespace WPFXAMLOverview {
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent();
// Create the StackPanel
StackPanel stackPanel = new StackPanel();
this.Content = stackPanel;
// Create the Button
Button button = new Button();
button.Content = "Click Me";
button.HorizontalAlignment = HorizontalAlignment.Left;
button.Margin = new Thickness(150);
button.VerticalAlignment = VerticalAlignment.Top;
button.Width = 75;
stackPanel.Children.Add(button);
}
}
}
当您编译并执行 XAML 代码或 C# 代码时,您将看到如下所示的相同输出。
从上面的示例中可以清楚地看出,您可以在 XAML 中创建、初始化和设置对象属性,同样的任务也可以使用代码完成。
XAML 只是设计 UI 元素的另一种简单方法。
使用 XAML,并不意味着设计 UI 元素是唯一的方法。 您可以在 XAML 中声明对象或使用代码定义它们。
XAML 是可选的,但尽管如此,它仍然是 WPF 设计的核心。
XAML 的目标是使视觉设计人员能够直接创建用户界面元素。
WPF 旨在使通过标记控制用户界面的所有视觉方面成为可能。