Freigeben über


ContentPropertyAttribute Klasse

Definition

Zeigt an, welche Eigenschaft eines Typs die XAML-Inhaltseigenschaft ist. Ein XAML-Prozessor verwendet diese Informationen bei der Verarbeitung von untergeordneten XAML-Elementen von XAML-Darstellungen des attributierten Typs.

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
Vererbung
ContentPropertyAttribute
Attribute

Hinweise

Dieses Attribut wird verwendet, um zu identifizieren, dass eine bestimmte Eigenschaft des attributierten Typs als XAML-Inhaltseigenschaft betrachtet werden soll, wenn sie von XAML-Parsern und anderen XAML-Frameworkcode interpretiert wird. Der Zweck einer XAML-Inhaltseigenschaft besteht darin, dass sie eine XAML-Syntaxkurz bereitstellt, die das Eigenschaftenelementmarkup für diese Eigenschaft weglassen kann. Das Entfernen von Eigenschaftselementen ermöglicht eine natürlichere Form über- und untergeordnete Elemente im XAML-Markup. Weitere Informationen zu XAML-Inhaltseigenschaften finden Sie im Abschnitt "XAML-Inhaltseigenschaften" des XAML-Syntaxleitfadens.

Ein Beispiel für eine Klasse im Standard-Windows-Runtime XAML-Vokabular, auf das ContentPropertyAttribute angewendet wurde, ist Panel. Die Children-Eigenschaft im Panel wird als XAML-Inhaltseigenschaft identifiziert, wie durch das ContentPropertyAttribute und dessen Name-Wert definiert. Die Inhaltseigenschafteninformationen werden von allen abgeleiteten Panel-Typen wie Grid und Canvas und StackPanel geerbt.

Dieser Code nähert an, wie Panel ContentPropertyAttribute in C# anwendet (die true-Definition wird im systemeigenen Code angewendet, dies dient nur zur Veranschaulichung):

[ContentProperty(Name = "Children")]
    public class Panel : FrameworkElement
    { ...}

Wenn Panel und die abgeleitete Klasse StackPanel als Abbildung des XAML-Inhaltseigenschaftenkonzepts verwendet werden, können Sie den folgenden XAML-Code verwenden:

<StackPanel>
  <StackPanel.Children>
    <TextBlock>Testing content attribute</TextBlock>
  </StackPanel.Children>
</StackPanel>

Das obige äquivalent zu diesem besser lesbaren XAML-Code:

<StackPanel>
  <TextBlock>Testing content attribute</TextBlock>
</StackPanel>

Bei der Analyse durch einen XAML-Parser weiß der Parser über das contentPropertyAttribute, das auf Panel angewendet wird, dass alle Inhalte, die im Textkörper eines StackPanel-Tags gefunden werden, verwendet werden sollen, um den Wert von Children für die erstellte StackPanel-instance festzulegen.

Ein weiteres prominentes Beispiel für ContentPropertyAttribute in Aktion ist in der TextBlock-Klasse zu sehen. TextBlock verwendet Inlines als Inhaltseigenschaft, und die Standard-Inlineklasse Run verwendet Text als Inhaltseigenschaft. In Kombination ermöglichen die Inhaltseigenschaften eine einfache Inlinesyntax wie <TextBlock>Hello</TextBlock>, auch wenn der von diesem XAML erstellte Objektgraph komplexer ist und bei Bedarf mehrere explizite Inlineelemente unterstützen kann.

Konstruktoren

ContentPropertyAttribute()

Initialisiert eine neue instance der ContentPropertyAttribute-Klasse.

Felder

Name

Zeigt an, welche Eigenschaft eines Typs die XAML-Inhaltseigenschaft ist. Ein XAML-Prozessor verwendet diese Informationen bei der Verarbeitung von untergeordneten XAML-Elementen von XAML-Darstellungen des attributierten Typs.

Gilt für:

Weitere Informationen