ContentPropertyAttribute 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
指出型別的哪個屬性是 XAML 內容屬性。 XAML 處理器在處理屬性型別之 XAML 表示法的 XAML 子元素時,會使用這項資訊。
public ref class ContentPropertyAttribute sealed : Attribute
[Windows.Foundation.Metadata.AttributeUsage(System.AttributeTargets.RuntimeClass)]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
public sealed class ContentPropertyAttribute : Attribute
Public NotInheritable Class ContentPropertyAttribute
Inherits Attribute
- 繼承
-
ContentPropertyAttribute
- 屬性
備註
此屬性用來識別該屬性類型中的特定屬性,當 XAML 解析器及其他 XAML 框架程式碼解讀時,應視為 XAML 內容屬性。 XAML 內容屬性的目的是提供一個 XAML 語法的簡寫,可以省略該屬性的屬性元素標記。 移除屬性元素有助於 XAML 標記中更自然的父子關係。 欲了解更多 XAML 內容屬性資訊,請參閱 XAML 語法指南中的「XAML 內容屬性」章節。
預設 Windows 執行階段 XAML 詞彙中,一個套用 ContentPropertyAttribute 的類別範例是 Panel。 Children on the Panel 這個屬性被識別為 XAML 內容屬性,依據 ContentPropertyAttribute 及其名稱值定義。 內容屬性資訊會被所有派生的 面板類型繼承,例如 Grid 、 Canvas 以及 StackPanel。
此程式碼近似 Panel 在 C# 中套用 ContentPropertyAttribute 的方式(真實定義在原生程式碼中,僅供說明):
[ContentProperty(Name = "Children")]
public class Panel : FrameworkElement
{ ...}
以 Panel 及其衍生類別 StackPanel 作為 XAML 內容屬性概念的說明,你可以得到以下 XAML:
<StackPanel>
<StackPanel.Children>
<TextBlock>Testing content attribute</TextBlock>
</StackPanel.Children>
</StackPanel>
上述等同於這個更易讀的 XAML:
<StackPanel>
<TextBlock>Testing content attribute</TextBlock>
</StackPanel>
當 XAML 解析器解析時,解析器透過在 Panel 上套用的 ContentPropertyAttribute 知道,StackPanel 標籤內的任何內容都應該用來設定 StackPanel 實例中子節點的值。
另一個 ContentPropertyAttribute 的顯著範例可見於 TextBlock 類別。
TextBlock 使用 Inline 作為其內容屬性,而預設的內嵌類別 Run 則使用 Text 作為其內容屬性。 結合起來,內容屬性使得簡單的內嵌語法 <TextBlock>Hello</TextBlock>如 ,儘管此 XAML 所建立的物件圖較為複雜,且若需要也能支援多個明確的內嵌元素。
建構函式
| 名稱 | Description |
|---|---|
| ContentPropertyAttribute() |
初始化 ContentPropertyAttribute 類別的新實例。 |
欄位
| 名稱 | Description |
|---|---|
| Name |
指出型別的哪個屬性是 XAML 內容屬性。 XAML 處理器在處理屬性型別之 XAML 表示法的 XAML 子元素時,會使用這項資訊。 |