使用WPF时遇到的第一件事就是XAML. XAML代表可扩展应用程序标记语言.它是一种基于XML的简单和声明性语言.
在XAML中,创建,初始化和设置属性非常容易具有层次关系的对象.
它主要用于设计GUI,但它也可以用于其他目的,例如,在工作流中声明工作流基础.
当您创建新的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元素的语法以左尖括号(<)开头,后跟对象的名称,例如按钮.
定义该对象元素的一些属性和属性.
对象元素必须用正斜杠(/)后面跟着一个直角括号(>).
< 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 Orientation = "Horizontal"> <TextBlock Text = "Hello"/> </StackPanel>
XAML不仅是WPF中最广为人知的功能,而且它也是最容易被误解的功能.如果您接触过WPF,那么您一定听说过XAML;但请注意以下两个关于XAML&minus的鲜为人知的事实;
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设计的核心./p>
XAML的目标是让视觉设计师能够直接创建用户界面元素.
WPF旨在通过标记来控制用户界面的所有视觉方面.