Поделиться через


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.

Примером класса в словаре по умолчанию среда выполнения Windows XAML, к которому применен атрибут ContentPropertyAttribute, является Panel. Свойство Children на панели определяется как свойство содержимого XAML в соответствии с определением ContentPropertyAttribute и его значением Name . Сведения о свойствах содержимого наследуются всеми производными типами Panel, такими как Grid , Canvas и StackPanel.

Этот код приблизительно описывает, как Панель применяет ContentPropertyAttribute в C# (истинное определение применяется в машинном коде, это только для иллюстрации):

[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, примененного к Panel, должно использоваться для задания значения Children в созданном экземпляре StackPanel.

Еще один важный пример ContentPropertyAttribute в действии можно увидеть в классе TextBlock . TextBlock использует Inlines в качестве свойства содержимого, а встроенный класс Run по умолчанию использует Text в качестве свойства содержимого. В сочетании свойства содержимого обеспечивают простой встроенный синтаксис, например <TextBlock>Hello</TextBlock>, даже если граф объектов, созданный этим XAML, является более сложным и при необходимости может поддерживать несколько явных встроенных элементов.

Конструкторы

ContentPropertyAttribute()

Инициализирует новый экземпляр класса ContentPropertyAttribute .

Поля

Name

Указывает, какое свойство типа является свойством содержимого XAML. Обработчик XAML использует эти сведения при обработке дочерних элементов XAML представлений XAML типа с атрибутом.

Применяется к

См. также раздел