Freigeben über


x:Array-Markuperweiterung

Bietet allgemeine Unterstützung für Arrays von Objekten in XAML über eine Markuperweiterung. Dies entspricht dem x:ArrayExtension XAML-Typ in [MS-XAML].

XAML-Objektelementverwendung

<x:Array Type="typeName">
  arrayContents
</x:Array>

XAML-Werte

Wert Beschreibung
typeName Der Name des Typs, den Ihre x:Array enthalten soll. typeName kann für einen XAML-Namespace, der die XAML-Typdefinitionen enthält, (und ist häufig) präfixiert.
arrayContents Die Elemente, die der systeminternen ArrayExtension.Items Eigenschaft zugewiesen sind. In der Regel werden diese Elemente als ein oder mehrere Objektelemente angegeben, die in den x:Array öffnenden und schließenden Tags enthalten sind. Hier angegebene Objekte müssen dem in typeNameangegebenen XAML-Typ zugewiesen werden.

Bemerkungen

Type ist ein erforderliches Attribut für alle x:Array Objektelemente. Ein Type Parameterwert muss keine x:Type Markuperweiterung verwenden; Der kurze Name des Typs ist ein XAML-Typ, der als Zeichenfolge angegeben werden kann.

In der .NET XAML Services-Implementierung wird die Beziehung zwischen dem Eingabe-XAML-Typ und der Ausgabe-CLR-Type des erstellten Arrays durch den Dienstkontext für Markuperweiterungen beeinflusst. Die Ausgabe Type ist die UnderlyingType des Eingabe-XAML-Typs, nachdem sie die erforderlichen XamlType basierend auf dem XAML-Schemakontext und dem vom Kontext bereitgestellten IXamlTypeResolver Dienst nachschlagen.

Bei der Verarbeitung werden die Arrayinhalte der ArrayExtension.Items systeminternen Eigenschaft zugewiesen. In der ArrayExtension Implementierung wird dies durch ArrayExtension.Itemsdargestellt.

In der .NET XAML Services-Implementierung wird die Behandlung für diese Markuperweiterung durch die ArrayExtension-Klasse definiert. ArrayExtension ist nicht versiegelt und kann als Grundlage für eine Markuperweiterungsimplementierung für einen benutzerdefinierten Arraytyp verwendet werden.

x:Array ist für die allgemeine Spracherweiterung in XAML vorgesehen. x:Array kann jedoch auch hilfreich sein, um XAML-Werte bestimmter Eigenschaften anzugeben, die XAML-unterstützte Sammlungen als strukturierten Eigenschafteninhalt verwenden. Sie können z. B. den Inhalt einer IEnumerable-Eigenschaft mit einer x:Array Verwendung angeben.

x:Array ist eine Markuperweiterung. Markuperweiterungen werden in der Regel implementiert, wenn es eine Anforderung gibt, Attributwerte als Literalwerte oder Handlernamen zu escapen, und die Anforderung ist globaler als das Platzieren von Typkonvertern für bestimmte Typen oder Eigenschaften. x:Array ist teilweise eine Ausnahme zu dieser Regel, da x:Array eine alternative Behandlung des Attributwerts anstelle einer alternativen Behandlung des inneren Textinhalts bereitstellt. Mit diesem Verhalten können Typen, die von einem vorhandenen Inhaltsmodell möglicherweise nicht unterstützt werden, in ein Array gruppiert und später im CodeBehind durch Zugriff auf das benannte Array referenziert werden. Sie können Array Methoden aufrufen, um einzelne Arrayelemente abzurufen.

Alle Markuperweiterungen in XAML verwenden die geschweiften Klammern ({,}) in ihrer Attributsyntax. Dies ist die Konvention, mit der ein XAML-Prozessor erkennt, dass eine Markuperweiterung den Attributwert verarbeiten muss. Weitere Informationen zu Markuperweiterungen im Allgemeinen finden Sie unter Typkonverter und Markuperweiterungen für XAML-.

In XAML 2009 wird x:Array als Sprachgrundtyp und nicht als Markuperweiterung definiert. Weitere Informationen finden Sie unter integrierten Typen für allgemeine XAML-Sprachgrundtypen.

WPF-Verwendungshinweise

In der Regel sind die Objektelemente, die eine x:Array auffüllen, keine Elemente, die im WPF-XAML-Namespace vorhanden sind, und erfordern eine Präfixzuordnung zu einem nicht standardmäßigen XAML-Namespace.

Das folgende Beispiel ist ein einfaches Array von zwei Zeichenfolgen, wobei das präfix sys (und auch x) auf der Ebene des Arrays definiert ist.

<x:Array Type="sys:String"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:sys="clr-namespace:System;assembly=mscorlib">
  <sys:String>Hello</sys:String>
  <sys:String>World</sys:String>
</x:Array>

Für benutzerdefinierte Typen, die als Arrayelemente verwendet werden, muss die Klasse auch die Anforderungen für die Instanziierung in XAML als Objektelemente unterstützen. Weitere Informationen finden Sie unter XAML- und benutzerdefinierte Klassen für WPF-.

Siehe auch