WPF - XAML概述

使用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包含Textblock作为子元素

<StackPanel Orientation = "Horizontal"> 
   <TextBlock Text = "Hello"/> 
</StackPanel>

为什么WPF中的XAML

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中创建,初始化和设置对象的属性,也可以使用代码完成相同的任务.

  • XAML只是另一种设计UI元素的简单方法.

  • 使用XAML,它并不意味着什么你可以做到设计UI元素是唯一的方法.您可以在XAML中声明对象,也可以使用代码定义它们.

  • XAML是可选的,但尽管如此,它仍然是WPF设计的核心./p>

  • XAML的目标是让视觉设计师能够直接创建用户界面元素.

  • WPF旨在通过标记来控制用户界面的所有视觉方面.