📜  WPF-XAML概述

📅  最后修改于: 2020-11-18 09:50:45             🧑  作者: Mango


使用WPF时遇到的第一件事就是XAML。 XAML代表可扩展应用程序标记语言。这是一种基于XML的简单声明性语言。

  • 在XAML中,创建,初始化和设置具有层次关系的对象的属性非常容易。

  • 它主要用于设计GUI,但是也可以用于其他目的,例如,在Workflow Foundation中声明工作流。

基本语法

创建新的WPF项目时,默认情况下,MainWindow.xaml中会遇到一些XAML代码,如下所示。

 
    
    
         
    
    

上面的XAML文件包含不同类型的信息。下表简要说明了每种信息的作用。

Information Description
It is the opening object element or container of the root.
x:Class = “Resources.MainWindow” It is a partial class declaration which connects the markup to the partial class code defined behind.
xmlns = “http://schemas.microsoft.com/win fx/2006/xaml/presentation” Maps the default XAML namespace for WPF client/framework
xmlns:x = “http://schemas.microsoft.com/w infx/2006/xaml” XAML namespace for XAML language which maps it to x: prefix
> End of object element of the root

It is starting and closing tags of an empty grid object.
Closing the object element

XAML的语法规则几乎与XML类似。如果查看XAML文档,则会注意到它实际上是有效的XML文件,但是XML文件不一定是XAML文件。这是因为在XML中,属性的值必须是一个字符串,而在XAML中,它可以是一个不同的对象,称为属性元素语法。

  • Object元素的语法以左尖括号(<)开头,后跟对象名称,例如Button。

  • 定义该对象元素的一些属性和属性。

  • Object元素必须用正斜杠(/)紧跟,然后紧跟一个直角括号(>)。

没有子元素的简单对象的示例

 

具有某些属性的对象元素的示例

 

替代语法的示例确实定义了属性(属性元素语法)

 

带有子元素的对象的示例:StackPanel包含Textblock作为子元素

 
    
 

为什么在WPF中使用XAML

XAML不仅是WPF最广为人知的功能,而且还是最容易被误解的功能之一。如果您接触过WPF,那么您一定听说过XAML。但请注意以下有关XAML的两个鲜为人知的事实-

  • WPF不需要XAML
  • XAML不需要WPF

实际上,它们是可分离的技术。为了理解这是怎么回事,让我们看一个简单的示例,其中在XAML中创建带有某些属性的按钮。

 
    
    
       
    
    
 

如果您选择在WPF中不使用XAML,那么您也可以使用过程语言获得相同的GUI结果。让我们看一下相同的示例,但是这次,我们将在C#中创建一个按钮。

using System.Windows; 
using System.Windows.Controls;  

namespace WPFXAMLOverview { 
   ///  
      /// Interaction logic for MainWindow.xaml 
   ///  
    
   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设计的核心。

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

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