语言

ContentPropertyAttribute 类

定义

指示类型的哪个属性是 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 内容属性”部分。

应用了 ContentPropertyAttribute 的默认Windows 运行时 XAML 词汇中的类示例是 Panel。 面板上的属性 Children 被标识为 ContentPropertyAttribute 及其 Name 值定义的 XAML 内容属性。 内容属性信息由所有派生的面板类型继承,例如 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 分析程序分析时,分析程序通过应用于面板的 ContentPropertyAttribute 知道,在 StackPanel 标记正文中找到的任何内容都应用于在创建的 StackPanel 实例上设置 Children 的值。

可以在 TextBlock 类中看到 ContentPropertyAttribute 的另一个突出示例。 TextBlock 使用 Inlines 作为其内容属性,默认内联类 Run 使用 Text 作为其内容属性。 同时,内容属性支持简单的内联语法,例如 <TextBlock>Hello</TextBlock>,即使此 XAML 创建的对象图更为复杂,也能够根据需要支持多个显式内联元素。

构造函数

名称 说明
ContentPropertyAttribute()

初始化 ContentPropertyAttribute 类的新实例。

字段

名称 说明
Name

指示类型的哪个属性是 XAML 内容属性。 XAML 处理器在处理特性化类型的 XAML 表示形式的 XAML 子元素时使用此信息。

适用于

另请参阅