Silverlight - XAML概述

使用Silverlight时您将遇到的第一件事就是XAML. XAML代表可扩展的应用程序标记语言.它是一种基于XML的简单和声明性语言.

  • 在XAML中,创建,初始化和

  • 它主要用于设计GUI.

    它也可以用于其他目的,例如,在工作流基础中声明工作流.

基本语法

创建新的Silverlight项目时,默认情况下会在 MainPage.xaml 中看到一些XAML代码,如下所示.

<UserControl x:Class = "FirstExample.MainPage" 
   xmlns = "https://img01.yuandaxia.cn/Content/img/tutorials/silverlight/schemas.microsoft.com/winfx/2006/xaml/presentation" 
   xmlns:x = "https://img01.yuandaxia.cn/Content/img/tutorials/silverlight/schemas.microsoft.com/winfx/2006/xaml" 
   xmlns:d = "https://img01.yuandaxia.cn/Content/img/tutorials/silverlight/schemas.microsoft.com/expression/blend/2008" 
   xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006" 
   mc:Ignorable = "d" 
   d:DesignHeight = "300" d:DesignWidth = "400"> 
	
   <Grid x:Name = "LayoutRoot" Background = "White"> 
         
   </Grid> 
	
</UserControl>

您可以看到上面给出的XAML文件提到了不同类型的信息;所有这些都在下面的表格中简要描述.

信息描述
< UserControl提供用于定义封装现有控件并提供其自身逻辑的新控件的基类.
x:Class ="FirstExample.MainPage"这是一个部分类声明,它将标记连接到其中定义的部分类代码.
xmlns ="https://img01.yuandaxia.cn/Content/img/tutorials/silverlight/schemas.microsoft.com/winfx/2006/xaml/presentation"映射Silverlight客户端/框架的默认XAML命名空间.
xmlns:x ="http://schemas.microsoft.c om/winfx/2006/xaml"XAML语言的XAML名称空间,它将其映射到x:前缀.
xmlns:d ="https://img01.yuandaxia.cn/Content/img/tutorials/silverlight/schemas.microsoft.com/expression/blend/2008"XAML命名空间用于设计器支持,特别是Microsoft Visual Studio的XAML设计界面中的设计器支持和Microsoft Expression Blend.
xmlns:mc ="http://schemas.openxmlforma ts.org/markup-compatibility/2006"表示并支持用于读取XAML的标记兼容模式.
>根的对象元素结束.
< Grid&gt ;</Grid>这些是空网格对象的起始和结束标记.
</UserControl>关闭对象元素.

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

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

  • 定义了该对象元素的属性和属性.

  • 对象元素必须用正斜杠(/)后跟一个右尖括号(>)后面.

示例没有子元素的简单对象如下所示.

< Button/>

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

<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/>

为什么Silverlight中的XAML

XAML最初并不是为Silverlight发明的.它来自Windows Presentation Foundation的WPF. Silverlight通常被描述为WPF的子集.这并不严格,因为Silverlight可以做一些WPF无法做到的事情.即使功能重叠,两者在细节上也略有不同.

  • 说WPF和更准确Silverlight在很多方面非常相似.尽管存在差异,但看看Silverlight借用WPF的XAML功能仍然可以提供信息.例如,Silverlight为位图和可缩放形状提供图形基元.

  • 它还提供用于呈现视频和音频的元素.

  • 它具有简单的格式化文本支持,您可以为任何元素设置动画.如果您了解WPF,那么您将很熟悉此功能集.

  • 重要的一点是,您不能使用WPF XAML并在Silverlight中使用它.

  • 虽然有相似之处,但您也会发现许多细微差别.

XAML&代码隐藏

XAML定义用户界面的外观和结构.但是,如果您希望应用程序在用户与其交互时执行任何有用的操作,则需要一些代码.

  • 每个XAML文件通常与源代码文件相关联,我们将其称为后面的代码.各种Microsoft框架使用这个术语.

  • 后面的代码通常需要使用XAML中定义的元素,要么检索有关用户输入的信息,要么显示给用户的信息.

  • 在下面给出的XAML代码中,定义了 TextBlock 按钮.默认情况下,当应用程序运行时,它将在网页上显示文本" Hello World!"和一个按钮.

<UserControl x:Class = "FirstExample.MainPage" 
   xmlns = "https://img01.yuandaxia.cn/Content/img/tutorials/silverlight/schemas.microsoft.com/winfx/2006/xaml/presentation" 
   xmlns:x = "https://img01.yuandaxia.cn/Content/img/tutorials/silverlight/schemas.microsoft.com/winfx/2006/xaml" 
   xmlns:d = "https://img01.yuandaxia.cn/Content/img/tutorials/silverlight/schemas.microsoft.com/expression/blend/2008" 
   xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006" 
   mc:Ignorable = "d" 
   d:DesignHeight = "300" d:DesignWidth = "400">
   
   <Grid x:Name = "LayoutRoot" Background = "White"> 
      <StackPanel> 
         <TextBlock x:Name = "TextMessage"  
            Text = "Hello World!"  
            Margin = "5"> 
         </TextBlock> 
			
         <Button x:Name = "ClickMe"  
            Click = "ClickMe_Click"  
            Content = "Click Me!"  
            Margin = "5"> 
         </Button> 
			
      </StackPanel> 
   </Grid> 
</UserControl>

  • 后面的代码可以访问以 x命名的任何元素:名称指令.

  • 命名元素可通过代码后面的字段获得,允许代码以通常的方式访问这些对象及其成员.

  • x:前缀表示该名称不是普通属性.

  • x:名称是XAML编译器的一个特殊信号,我们想要在后面的代码中访问该对象.

下面是按钮单击事件实现,其中 TextBlock 文本已更新.

using System.Windows; 
using System.Windows.Controls;
  
namespace FirstExample {
 
   public partial class MainPage : UserControl {
	
      public MainPage() { 
         InitializeComponent(); 
      }
		
      private void ClickMe_Click(object sender, RoutedEventArgs e) { 
         TextMessage.Text = "Congratulations! you have created your first Silverlight Applicatoin"; 
      } 
   }  
}

  • XAML是不是设计UI元素的唯一方法.您可以在XAML中声明对象,也可以在代码中声明/写入.

  • XAML是可选的,但尽管如此,它仍然是 Silverlight 设计.

  • XAML编码的目标是让视觉设计师能够直接创建用户界面元素.因此, Silverlight 旨在通过标记来控制用户界面的所有视觉方面.