
- Silverlight 教程
- Silverlight - 首頁
- Silverlight - 概覽
- Silverlight - 環境設定
- Silverlight - 入門
- Silverlight - XAML 概述
- Silverlight - 專案型別
- Silverlight - 固定佈局
- Silverlight - 動態佈局
- 受約束與不受約束
- Silverlight - CSS
- Silverlight - 控制元件
- Silverlight - 按鈕
- Silverlight - 內容模型
- Silverlight - ListBox
- Silverlight - 模板
- Silverlight - 可視狀態
- Silverlight - 資料繫結
- Silverlight - 瀏覽器整合
- Silverlight - 瀏覽器外
- Silverlight - 應用程式和資源
- Silverlight - 檔案訪問
- Silverlight - 檢視模型
- Silverlight - 輸入處理
- Silverlight - 隔離儲存
- Silverlight - 文字
- Silverlight - 動畫
- Silverlight - 影片和音訊
- Silverlight - 列印
- Silverlight 有用資源
- Silverlight - 快速指南
- Silverlight - 有用資源
- Silverlight - 討論
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 程式碼中,定義了TextBlock和Button。預設情況下,當應用程式執行時,它將在網頁上顯示文字“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旨在使從標記控制使用者介面的所有視覺方面成為可能。