XAML 語法指南

我們會說明 XAML 語法規則和描述 XAML 語法可用限制或選項的術語。 如果您不熟悉使用 XAML 語言,想要重新整理語法的術語或部分,或者您想知道 XAML 語言的運作方式,以及想要更多背景和內容,您就會發現這個主題很有用。

XAML 為 XML

可延伸的應用程式標記語言 (XAML) 具有以 XML 為基礎的基本語法,而且根據定義,有效的 XAML 必須是有效的 XML。 但 XAML 也有自己的語法概念,可擴充 XML。 指定的 XML 實體在純文字 XML 中可能有效,但該語法在 XAML 中可能有不同的更完整意義。 本主題說明這些 XAML 語法概念。

XAML 詞彙

XAML 與大部分 XML 使用方式不同之處之一是,XAML 通常不會使用架構強制執行,例如 XSD 檔案。 這是因為 XAML 的目的是可延伸,這就是縮寫 XAML 中「X」的意義。 剖析 XAML 之後,您在 XAML 中參考的元素和屬性應該存在於某些支援的程式碼表示法中,無論是在 Windows 執行階段 所定義的核心類型中,或是擴充或根據 Windows 執行階段 的類型。 SDK 檔案有時是指已經內建至 Windows 執行階段的類型,而且可用於 XAML 中做為 Windows 執行階段的 XAML 詞彙。 Microsoft Visual Studio 可協助您產生在此 XAML 詞彙中有效的標記。 只要專案中正確參考這些類型的來源,Visual Studio 也可以包含 XAML 使用的自訂類型。 如需 XAML 和自訂類型的詳細資訊,請參閱 XAML 命名空間與命名空間對應

宣告物件

程式設計人員通常會在物件和成員方面思考,而標記語言則概念化為元素和屬性。 從最基本的意義上說,您在 XAML 標記中宣告的項目會成為備份執行階段物件表示中的物件。 若要為您的應用程式建立執行階段物件,您可以在 XAML 標記中宣告 XAML 元素。 當 Windows 執行階段載入 XAML 時,就會建立物件。

XAML 檔案一律只有一個元素做為其根目錄,它會宣告物件,該物件將成為某些程式設計結構的概念根目錄,例如頁面,或應用程式整個執行階段定義的物件圖形。

在 XAML 語法方面,有三種方式可以在 XAML 中宣告物件:

  • 直接使用物件元素語法:這會使用開頭和結尾標記,將物件具現化為 XML 格式專案。 您可以使用這個語法來宣告根物件,或建立可設定屬性值的巢狀物件。
  • 間接使用屬性語法:這會使用內嵌字串值,其中包含如何建立物件的指示。 XAML 剖析器會使用此字串,將屬性的值設定為新建立的參考值。 其支援僅限於特定通用物件和屬性。
  • 使用標記延伸。

這並不表示您一律可以選擇在 XAML 詞彙中建立物件的任何語法。 某些物件只能使用物件元素語法來建立。 某些物件只能藉由一開始在屬性中設定來建立。 事實上,可以使用物件元素或屬性語法建立的物件在 XAML 詞彙中比較罕見。 即使這兩種語法形式都可行,其中一個語法在樣式方面會比較常見。 您也可以在 XAML 中使用技術來參考現有的物件,而不是建立新的值。 現有的物件可能定義於 XAML 的其他區域中,或可能透過平台及其應用程式或程式設計模型的一些行為隱含存在。

使用物件元素語法宣告物件

若要宣告具有物件元素語法的物件,您可以撰寫類似下列的標記:<objectName> </objectName>,其中 objectName 是您想要具現化之物件的類型名稱。 以下是宣告 Canvas 物件的物件元素用法:

<Canvas>
</Canvas>

如果物件不包含其他物件,您可以使用一個自我結尾標記來宣告物件元素,而不是開頭/結尾配對:<Canvas />

容器

許多做為 UI 元素的物件,例如 Canvas,可以包含其他物件。 這些有時稱為容器。 下列範例顯示包含一個專案 RectangleCanvas 容器。

<Canvas>
  <Rectangle />
</Canvas>

使用屬性語法宣告物件

由於此行為會繫結至屬性設定,因此我們將在後續章節中進一步討論這一點。

初始化文字

對於某些物件,您可以使用內部文字宣告新值,做為建構的初始化值。 在 XAML 中,這項技術和語法稱為初始化文字。 在概念上,初始化文字類似於呼叫具有參數的建構函式。 初始化文字適用於設定特定結構的初始值。

如果您想要具有 x:Key 的結構值,則通常會使用物件元素語法搭配初始化文字,使其可以存在於 ResourceDictionary 中。 如果您在多個目標屬性之間共用該結構值,您可能會這樣做。 對於某些結構,您無法使用屬性語法來設定結構的值:初始化文字是產生有用且可共用的 CornerRadiusThicknessGridLengthColor 資源的唯一方法。

此簡短範例使用初始化文字來指定「厚度」的值,在本例中指定將「左」「右」設為 20、將「上」「下」設為 10 的值。 此範例顯示建立為索引鍵資源的 Thickness,然後顯示該資源的參考。 有關厚度初始化文字的更多資訊,請參閱厚度

<UserControl ...>
  <UserControl.Resources>
    <Thickness x:Key="TwentyTenThickness">20,10</Thickness>
    ....
  </UserControl.Resources>
  ...
  <Grid Margin="{StaticResource TwentyTenThickness}">
  ...
  </Grid>
</UserControl ...>

注意:某些結構無法宣告為物件元素。 不支援初始化文字,因此無法當做資源使用。 您必須使用屬性語法,才能在 XAML 中將屬性設定為這些值。 這些類型是:持續時間重複行為矩形大小

設定屬性

您可以在使用物件項目語法所宣告的物件上設定屬性。 在 XAML 中設定屬性有多種方法:

  • 使用屬性語法。
  • 使用屬性項目語法。
  • 藉由使用元素語法,其中內容 (內部文字或下層元素) 正在設定物件的 XAML 內容屬性。
  • 使用集合語法 (通常是隱含集合語法)。

如同物件宣告,此清單並不表示任何屬性都可以使用每個技術來設定。 某些屬性只支援其中一種技術。 某些屬性支援一個以上的表單;例如,有屬性可以使用屬性元素語法或屬性語法。 可能的方式取決於屬性和屬性所使用的物件類型。 在 Windows 執行階段 API 參考中,您會看到您可以在 [語法] 區段中使用的 XAML 用法。 有時候有替代的使用方式可以運作,但會更詳細。 這些詳細資訊的使用方式不一定會顯示,因為我們正嘗試示範在 XAML 中使用該屬性的最佳做法或真實世界案例。 XAML 語法的指引是在 XAML 中設定之屬性的 XAML 使用方式區段中提供。

物件上的某些屬性無法透過任何方式在 XAML 中設定,而且只能使用程式碼來設定。 這些屬性通常更適合在程式碼後置中使用,而不是在 XAML 中使用。

唯讀屬性無法在 XAML 中設定。 即使在程式碼中,擁有類型仍必須支援一些其他方法來設定它,例如建構函式多載、協助程式方法或計算出屬性支援。 匯出屬性依賴其他可設定屬性的值,有時還有內建處理的事件;這些功能可在相依性屬性系統中取得。 如需相依性屬性如何對匯出屬性支援很有用的詳細資訊,請參閱相依性屬性概觀

XAML 中的集合語法看起來像是您正在設定唯讀屬性,但實際上並非如此。 請參閱本主題後面的「集合語法」。

使用屬性語法設定屬性

設定屬性值是您在標記語言中設定屬性值的一般方法,例如 XML 或 HTML。 設定 XAML 屬性類似於您在 XML 中設定屬性值的方式。 屬性名稱會在元素名稱之後的任何標記內指定,並以至少一個空格符分隔元素名稱。 屬性名稱後面接著等號。 屬性值包含在一對引號內。 引號可以是雙引號或單引號,只要它們符合並括住值即可。 屬性值本身必須以字串表示。 字串通常包含數字,但對 XAML,所有屬性值都是字串值,直到 XAML 剖析器參與,並執行一些基本值轉換。

此範例使用四個屬性的屬性語法來設定 Rectangle 物件的 NameWidthHeightFill 屬性。

<Rectangle Name="rectangle1" Width="100" Height="100" Fill="Blue" />

使用屬性元素語法設定屬性

您可以使用屬性項目語法來設定物件的許多屬性。 屬性元素如下所示:<object.property>

若要使用屬性元素語法,您可以為想要設定的屬性建立 XAML 屬性元素。 在標準 XML 中,此元素只會被視為名稱中有點的專案。 不過,在 XAML 中,元素名稱中的點會將專案識別為屬性專案,且屬性必須是支援物件模型實作中的物件成員。 若要使用屬性元素語法,必須能夠指定物件元素,才能「填滿」屬性項目標記。 屬性元素一律會有一些內容 (單一元素、多個元素或內部文字):沒有自我關閉屬性元素的點。

在下列文法中,property 是您想要設定的屬性名稱,而 propertyValueAsObjectElement 是單一物件元素,預期滿足屬性的值類型需求。

<object>

<object.property>

propertyValueAsObjectElement

</object.property>

</object>

以下範例使用屬性元素語法來設定具有 SolidColorBrush 物件元素的矩形填滿。 (在 SolidColorBrush 中,Color 設定為屬性。) 此 XAML 的剖析結果與前面使用屬性語法設定 Fill 的 XAML 範例相同。

<Rectangle
  Name="rectangle1"
  Width="100" 
  Height="100"
> 
  <Rectangle.Fill> 
    <SolidColorBrush Color="Blue"/> 
  </Rectangle.Fill>
</Rectangle>

XAML 詞彙和面向物件程式設計

當屬性和事件顯示為 Windows 執行階段 XAML 類型的 XAML 成員時,通常會繼承自基底類型。 請思考此範例:<Button Background="Blue" .../>Background 屬性不是 Button 類別上立即宣告的屬性。 相反地,Background 會繼承自基底 Control 類別。 事實上,如果您查看 Button 的參考主題,您將看到成員清單至少包含一個繼承自一系列連續基底類別的成員:ButtonBaseControlFrameworkElementUIElementDependencyObject。 在 [屬性] 清單中,所有讀寫屬性和集合屬性都會在 XAML 詞彙意義上繼承。 事件 (例如各種 UIElement 事件) 也會繼承。

如果您使用 Windows 執行階段參考進行 XAML 指引,則語法中或甚至範例程式碼中顯示的元素名稱有時是針對原本定義屬性的類型,因為該參考主題是由繼承自基底類別的所有可能類型所共用。 如果您在 XML 編輯器中使用 Visual Studio 的 IntelliSense for XAML,IntelliSense 及其下拉式清單會非常出色地結合繼承,並提供一份精確的屬性清單,讓您在開始使用類別執行個體的物件元素之後,即可設定這些屬性。

XAML 內容屬性

某些類型會定義其其中一個屬性,讓屬性啟用 XAML 內容語法。 針對類型的 XAML 內容屬性,您可以在 XAML 中指定該屬性時,省略該屬性的屬性專案。 或者,您可以直接在擁有類型的物件元素標籤內提供該內部文字,將屬性設定為內部文字值。 XAML 內容屬性支援該屬性的直接標記語法,並藉由減少巢狀,讓 XAML 更容易閱讀。

如果有 XAML 內容語法可用,該語法會顯示在 Windows 執行階段參考文件中該屬性的「XAML」區段中。 例如,BorderChild 屬性頁會顯示 XAML 內容語法,而不是屬性元素語法來設定 Border 的單一物件 Border.Child 值,如下所示:

<Border>
  <Button .../>
</Border>

如果宣告為 XAML 內容屬性的屬性是 Object 類型或類型 String,則 XAML 內容語法支援 XML 檔案模型中基本內部文字的內容:開頭和結尾物件標記之間的字串。 例如,TextBlockText 屬性頁會顯示 XAML 內容語法,其具有設定 Text 的內部文字值,但標記中永遠不會顯示字串「Text」。 以下是範例用法:

<TextBlock>Hello!</TextBlock>

如果類別的 XAML 內容屬性存在,則會在「Attributes」區段中的類別參考主題中指出。 尋找 ContentPropertyAttribute 的值。 此屬性使用具名欄位「Name」。 「Name」的值是該類別的屬性名稱,即 XAML 內容屬性。 例如,在邊界參考頁面上,您將看到:ContentProperty("Name=Child")。

我們應該提及的一個重要 XAML 語法規則是,您無法將 XAML 內容屬性與您在元素上設定的其他屬性元素混雜在一起。 XAML 內容屬性必須完全設定在任何屬性元素之前,或完全之後設定。 例如,這是無效的 XAML:

<StackPanel>
  <Button>This example</Button>
  <StackPanel.Resources>
    <SolidColorBrush x:Key="BlueBrush" Color="Blue"/>
  </StackPanel.Resources>
  <Button>... is illegal XAML</Button>
</StackPanel>

集合語法

到目前為止顯示的所有語法都是將屬性設定為單一物件。 但許多 UI 案例要求指定的上層元素可以有多個下層元素。 例如,輸入表單的 UI 需要數個文字方塊元素、某些標籤,以及「提交」按鈕。 不過,如果您要使用程式設計物件模型來存取這些多個元素,它們通常是單一集合屬性中的元素,而不是每個項目都是不同屬性的值。 XAML 支援多個下層元素,以及藉由將使用集合類型做為隱含的屬性,以及針對集合類型的任何下層元素執行特殊處理,以支援一般支援集合模型。

許多集合屬性也會識別為類別的 XAML 內容屬性。 隱含集合處理和 XAML 內容語法的組合經常出現在用於控制項組合的類型中,例如面板、檢視或項目控制項。 例如,下列範例顯示撰寫 StackPanel 內兩個對等 UI 元素的最簡單 XAML。

<StackPanel>
  <TextBlock>Hello</TextBlock>
  <TextBlock>World</TextBlock>
</StackPanel>

XAML 集合語法的機制

一開始可能會顯示 XAML 正在啟用唯讀集合屬性的「集合」。 實際上,XAML 會在此處啟用的項目新增至現有的集合。 實作 XAML 支援的 XAML 語言和 XAML 處理器依賴支援集合類型中的慣例來啟用此語法。 通常有一個支援屬性,例如索引持或 Items 屬性,可參考集合的特定專案。 一般而言,該屬性在 XAML 語法中並不明確。 針對集合,XAML 剖析的基礎機制不是屬性,而是方法:具體而言,大部分情況下是 Add 方法。 當 XAML 處理器在 XAML 集合語法中遇到一或多個物件元素時,會先從元素建立每個這類物件,然後藉由呼叫集合的 Add 方法,將每個新物件新增至包含的集合。

當 XAML 剖析器將項目新增至集合時,它是 Add 方法的邏輯,可判斷指定的 XAML 元素是否為集合物件的允許項目下層。 許多集合類型都是由備份實作強類型,這表示 Add 的輸入參數預期傳遞的任何類型都必須與 Add 參數類型相符。

針對集合屬性,當您嘗試明確指定集合做為物件元素時,請小心。 每當遇到物件元素時,XAML 剖析器就會建立新的物件。 如果您嘗試使用的集合屬性是唯讀的,這可能會擲回 XAML 剖析例外狀況。 只要使用隱含集合語法,您就不會看到該例外狀況。

使用屬性或屬性元素語法的時機

支援在 XAML 中設定的所有屬性都會支援直接值設定的屬性或屬性元素語法,但可能不支援任一語法可互換。 某些屬性確實支援任一語法,有些屬性支援其他語法選項,例如 XAML 內容屬性。 屬性支援的 XAML 語法類型取決於屬性用來做為其屬性類型的物件類型。 如果屬性類型是基本類型,例如雙精確型 (浮點型或小數型)、整數、布林型或字串,則該屬性始終支援屬性語法。

如果用來設定該屬性的物件類型可以透過處理字串來建立,您也可以使用屬性語法來設定屬性。 就基本類型而言,這一律為案例,類型轉換是內建至剖析器。 不過,某些其他物件類型也可以使用指定為屬性值的字串來建立,而不是屬性元素內的物件元素。 若要這樣做,必須有基礎類型轉換,由該特定屬性支援,或一般支援使用該屬性類型的所有值。 屬性的字串值是用來設定對新物件值初始化很重要的屬性。 根據特定類型轉換器在字串中唯一處理資訊的方式而定,特定類型轉換器也可以建立通用屬性類型的不同子類別。 支援此行為的物件類型將會在參考文件的語法區段中列出特殊的文法。 做為範例,Brush 的 XAML 語法顯示如何使用屬性語法為 Brush 類型的任何屬性建立新的 SolidColorBrush 值 (Windows 執行階段 XAML 中有許多 Brush 屬性)。

XAML 剖析邏輯和規則

有時候,以類似 XAML 剖析器必須讀取 XAML 的方式來讀取 XAML 是有資訊性的:做為一組以線性順序遇到的字串標記。 XAML 剖析器必須在 XAML 運作方式定義的一組規則下解譯這些權杖。

設定屬性值是您在標記語言中設定屬性值的一般方法,例如 XML 或 HTML。 在下列語法中,objectName 是您想要具現化的物件,propertyName 是您要在該物件上設定的屬性名稱,而 propertyValue 是要設定的值。

<objectName propertyName="propertyValue" .../>

-or-

<objectName propertyName="propertyValue">

...<!--element children -->

</objectName>

任一語法都可讓您宣告物件,並在該物件上設定屬性。 雖然第一個範例是標記中的單一元素,但此處實際上有關於 XAML 處理器如何剖析此標記的步驟。

首先,物件元素的存在表示必須具現化新的 objectName 物件。 只有在這類執行個體存在之後,才能設定執行個體屬性 PropertyName

XAML 的另一個規則是元素的屬性必須能夠依任何順序設定。 例如,<Rectangle Height="50" Width="100" /><Rectangle Width="100" Height="50" /> 之間沒有區別。 您使用的順序是樣式問題。

注意:如果您使用 XML 編輯器以外的設計介面,XAML 設計工具通常會提升排序慣例,但稍後可以自由編輯該 XAML,以重新排序屬性或引進新的介面。

附加屬性

XAML 會藉由新增稱為附加屬性的語法元素來擴充 XML。 與屬性元素語法類似,附加屬性語法包含點,而點對 XAML 剖析具有特殊意義。 具體而言,點會分隔附加屬性的提供者和屬性名稱。

在 XAML 中,您會使用 AttachedPropertyProvider 語法來設定附加屬性。PropertyName 以下是如何在 XAML 中設定附加屬性 Canvas.Left 的範例:

<Canvas>
  <Button Canvas.Left="50">Hello</Button>
</Canvas>

您可以在不支援類型中沒有該名稱屬性的項目上設定附加屬性,如此一來,它們的運作方式就有點像全域屬性,或是由 xml:space 屬性等不同 XML 命名空間所定義的屬性。

在 Windows 執行階段 XAML 中,您會看到支援這些案例的附加屬性:

如需詳細資訊,請參閱附加屬性概觀

常值「{」值

因為左大括號符號 { 是標記延伸序列的開頭,因此您可以使用逸出序列來指定以「{」開頭的常值字串值。 逸出序列為「{}」。 例如,若要指定單一左大括弧的字串值,請將屬性值指定為「{}{」。 您也可以使用替代引號 (例如,屬性值中的 '"" 分隔) 來提供「{」值做為字串。

注意:如果「\}」位於引號屬性內,也會運作。  

列舉值

Windows 執行階段 API 中的許多屬性都會使用列舉做為值。 如果成員是讀寫屬性,您可以藉由提供屬性值來設定這類屬性。 您可以使用常數名稱的不限定名稱,識別要使用哪一個列舉值做為屬性的值。 例如,以下是如何在 XAML 中設定 UIElement.Visibility<Button Visibility="Visible"/>。 此處的「Visible」字串會直接對應至 Visibility 列舉的具名常數 Visible

  • 請勿使用合格的表單,將無法運作。 例如,這是無效的 XAML:<Button Visibility="Visibility.Visible"/>
  • 請勿使用常數的值。 換句話說,不要依賴明確或隱含地根據列舉的定義方式,而依賴列舉的整數值。 雖然它似乎正常運作,但在 XAML 或程式碼中,這是一個不良做法,因為您依賴可能是暫時性實作詳細資料。 例如,請勿執行此動作:<Button Visibility="1"/>

注意:在使用 XAML 和列舉的 API 的參考主題中,按一下語法「屬性值」部分中指向列舉類型的連結。 此連結至列舉頁面,您可以在其中探索該列舉的具名常數。

列舉可以是旗標,這表示這些列舉是使用 FlagsAttribute 屬性。 如果您需要將旗標列舉的值組合指定為 XAML 屬性值,請使用每個列舉常數的名稱,並在每個名稱之間加上逗號 (,),而且不會插上空白字元。 旗標屬性在 Windows 執行階段 XAML 詞彙中並不常見,但 ManipulationModes 是支援在 XAML 中設定旗標列舉值的範例。

XAML 中的介面

在極少數情況下,您會看到 XAML 語法,其中屬性的類型是介面。 在 XAML 類型系統中,實作該介面的類型在剖析時可接受為值。 必須有這類類型的已建立執行個體,才能做為值。 您將看到一個介面用做 ButtonBaseCommandCommandParameter 屬性的 XAML 語法中的類型。 這些屬性支援Model-View-ViewModel (MVVM) 設計模式,其中 ICommand 介面是檢視和模型互動方式的合約。

Windows 執行階段參考中的 XAML 預留位置慣例

如果您檢查過任何可使用 XAML 的 Windows 執行階段 API 參考主題的語法部分,您可能會發現該語法包含相當多的預留位置。 XAML 語法與 C#、Microsoft Visual Basic 或 Visual C++ 元件延伸模組 (C++/CX) 語法不同,因為 XAML 語法是使用語法。 這暗示了您自己 XAML 檔案的最終使用方式,但不對您可以使用的值進行過度規範。 因此,使用方式通常會描述混合常值和預留位置的文法類型,並在 XAML 值區段中定義部分預留位置。

當您在屬性的 XAML 語法中看到類型名稱/元素名稱時,所顯示的名稱是針對原本定義屬性的類型。 但是 Windows 執行階段 XAML 支援 DependencyObject 型類別的類別繼承模型。 因此,您通常會在不是定義類別的類別上使用屬性,而是衍生自第一個定義屬性/屬性的類別。 例如,您可以使用深層繼承,將 Visibility 設定為任何 UIElement 衍生類別上的屬性。 例如: <Button Visibility="Visible" /> 。 因此,不要過於字面地理解任何 XAML 使用語法中顯示的元素名稱;該語法對於表示該類別的元素以及表示衍生類別的元素可能是可行的。 如果類型在實際使用方式中顯示為定義元素的罕見或不可能,該類型名稱在語法中會刻意小寫。 例如,您針對 UIElement.Visibility 看到的語法為:

<uiElement Visibility="Visible"/>
-or-
<uiElement Visibility="Collapsed"/>

許多 XAML 語法區段都包含「使用方式」中的預留位置,然後定義於直接在 [語法] 區段下的 XAML 值區段中。

XAML 使用區段也會使用各種一般化預留位置。 這些預留位置不會每次在 XAML 值中重新定義,因為您會猜測或最終瞭解它們代表的內容。 我們認為大多數讀者會厭倦在 XAML 值中一次又一次地看到它們,因此我們將它們排除在定義之外。 如需參考,以下是其中一些預留位置的清單,以及它們一般意義上的意義:

  • object:理論上可以是任何物件值,但實際上通常僅限於某些類型的物件,例如字串或物件選擇,您應該檢查參考頁上的備註以獲取更多資訊。
  • objectpropertyobjectproperty 組合用於所顯示的語法是可用做許多屬性的屬性值的類型的語法的情況。 例如,為 Brush 顯示的 Xaml 屬性用法包括:<objectproperty="predefinedColorName"/>
  • eventhandler:這會顯示為事件屬性所顯示之每個 XAML 語法的屬性值。 您在此處提供的是事件處理常式函式的函式名稱。 該函式必須在 XAML 頁面的程式碼後置中定義。 在程式設計層級,該函式必須符合您要處理之事件的委派簽章,否則您的應用程式程式碼將不會編譯。 但這確實是程式設計考慮,而不是 XAML 考慮,因此我們不會嘗試在 XAML 語法中提示委派類型的任何內容。 如果您想要知道應該針對事件實作哪一個委派,該委派位於事件參考主題的 [事件資訊] 區段中,在標示為 Delegate 的資料表資料列中。
  • enumMemberName:顯示在所有列舉的屬性語法中。 使用列舉值的屬性有類似的預留位置,但它通常會在預留位置前面加上列舉名稱的提示。 例如,FrameworkElement.FlowDirection 顯示的語法為 <frameworkElementFlowDirection="flowDirectionMemberName"/>。 如果您位於其中一個屬性參考頁面,請按一下 [屬性值] 區段中出現的列舉類型連結,文字 Type:。 對於使用該列舉的屬性屬性值,您可以使用 Members 清單的 Member 資料行中列出的任何字串。
  • doubleintstringbool:這些是 XAML 語言已知的基本類型。 如果您使用 C# 或 Visual Basic 進行程式設計,這些類型將投影為 Microsoft .NET 等效類型,例如 DoubleInt32StringBoolean,並且在使用 XAML 定義時,您可以使用這些 .NET 類型上的任何成員. NET 程式碼後置中的值。 如果您使用 C++/CX 進行程式設計,您將使用 C++ 基本類型,但您也可以將它們視為等同於 Platform 命名空間定義的類型,例如 Platform::String。 特定屬性有時會有額外的值限制。 但您通常會在 [屬性值] 區段或 [備註] 區段中看到這些項目,而不是在 XAML 區段中,因為任何這類限制都適用於程式碼使用方式和 XAML 用法。

提示和技巧,樣式注意事項

  • 標記延伸一般會在主要 XAML 概觀中說明。 但對本主題中提供的指引影響最大的標記延伸是 StaticResource 標記延伸 (以及相關的 ThemeResource)。 StaticResource 標記延伸的函式是讓 XAML 分解為來自 XAML ResourceDictionary 的可重複使用資源。 您幾乎一律會在 ResourceDictionary 中定義控制項範本和相關樣式。 您通常也會在 ResourceDictionary 中定義控制項範本定義或應用程式特定樣式的較小部分,例如,針對應用程式針對不同 UI 部分使用一次以上色彩的 SolidColorBrush。 藉由使用 StaticResource,任何需要屬性元素使用方式設定的屬性,現在都可以在屬性語法中設定。 但是,將 XAML 分解為重複使用的優點不僅僅是簡化頁面層級語法。 如需詳細資訊,請參閱 ResourceDictionary 與 XAML 資源參考
  • 您會看到數種不同的慣例,以瞭解如何在 XAML 範例中套用空白字元和行摘要。 特別是,有不同慣例可用來分拆已設定許多不同屬性的物件元素。 這只是樣式問題。 當您編輯 XAML 時,Visual Studio XML 編輯器會套用一些預設樣式規則,但您可以在設定中變更這些規則。 XAML 檔案中的空白字元會被視為相當重要的情況很少;如需詳細資訊,請參閱 XAML 和空白字元