Silverlight - XAML 概述



在使用 Silverlight 時,您會遇到的第一件事之一就是 XAML。XAML 代表可擴充套件應用程式標記語言。它是一種基於 XML 的簡單宣告性語言。

  • 在 XAML 中,建立、初始化和設定具有層次關係的物件屬性非常容易。

  • 它主要用於設計 GUI。

  • 它也可以用於其他目的,例如,在工作流基礎中宣告工作流。

基本語法

當您建立一個新的 Silverlight 專案時,您將在MainPage.xaml中看到一些預設的 XAML 程式碼,如下所示。

<UserControl x:Class = "FirstExample.MainPage" 
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" 
   xmlns:d = "http://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 = "http://schemas.microsoft.com /winfx/2006/xaml/presentation" 對映 Silverlight 客戶端/框架的預設 XAML 名稱空間。
xmlns:x = "http://schemas.microsoft.c om/winfx/2006/xaml" XAML 語言的 XAML 名稱空間,將其對映到 x: 字首。
xmlns:d = "http://schemas.microsoft.com /expression/blend/2008" XAML 名稱空間旨在用於設計器支援,特別是 Microsoft Visual Studio 和 Microsoft Expression Blend 中的 XAML 設計介面的設計器支援。
xmlns:mc = "http://schemas.openxmlforma ts.org/markup-compatibility/2006" 指示並支援用於讀取 XAML 的標記相容性模式。
> 根物件的元素結束。
<Grid></Grid> 這些是空網格物件的開始和結束標籤。
</UserControl> 關閉物件元素。

XAML 的語法規則與 XML 的語法規則幾乎相同。如果您檢視 XAML 文件,您會注意到它實際上是一個有效的 XML 檔案。反之則不然,因為在 XML 中,屬性的值必須是字串,而在 XAML 中它可以是不同的物件,這被稱為屬性元素語法。

  • 物件元素的語法以左尖括號 (<) 開始,後跟物件的名稱,例如 Button。

  • 定義該物件元素的屬性。

  • 物件元素必須以正斜槓 (/) 後跟右尖括號 (>) 關閉。

下面顯示了一個沒有子元素的簡單物件的示例。

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

為什麼 Silverlight 中要使用 XAML

XAML 最初並非為 Silverlight 發明。它來自 WPF,即 Windows Presentation Foundation。Silverlight 通常被描述為 WPF 的一個子集。這並不完全正確,因為 Silverlight 可以做一些 WPF 做不到的事情。即使在功能重疊的地方,這兩個方面在細節上也略有不同。

  • 更準確地說,WPF 和 Silverlight 在許多方面都非常相似。儘管存在差異,但檢視 Silverlight 從 WPF 借鑑的 XAML 功能仍然很有幫助。例如,Silverlight 提供了用於點陣圖和可縮放形狀的圖形基元。

  • 它還提供用於渲染影片和音訊的元素。

  • 它具有簡單的格式化文字支援,並且您可以對任何元素進行動畫處理。如果您瞭解 WPF,那麼此功能集將很熟悉。

  • 需要注意的一點是,您不能使用 WPF XAML 並將其用於 Silverlight。

  • 儘管存在相似之處,但您還會發現許多細微的差異。

XAML 和程式碼隱藏

XAML 定義使用者介面的外觀和結構。但是,如果希望應用程式在使用者與之互動時執行任何有用的操作,則需要一些程式碼。

  • 每個 XAML 檔案通常都與一個原始碼檔案關聯,我們將其稱為程式碼隱藏。各種 Microsoft 框架都使用此術語。

  • 程式碼隱藏通常需要使用 XAML 中定義的元素,以便檢索有關使用者輸入的資訊或向用戶顯示資訊。

  • 在下面給出的 XAML 程式碼中,定義了TextBlockButton。預設情況下,當應用程式執行時,它將在網頁上顯示文字“Hello World!”和一個按鈕。

<UserControl x:Class = "FirstExample.MainPage" 
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" 
   xmlns:d = "http://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:Name指令命名的任何元素。

  • 命名元素透過程式碼隱藏中的欄位可用,允許程式碼以通常的方式訪問這些物件及其成員。

  • x:Prefix表示該名稱不是普通屬性。

  • x:Name是 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旨在使從標記控制使用者介面的所有視覺方面成為可能。

廣告