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].

Verwendung von XAML-Objektelementen

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

XAML-Werte

Wert Beschreibung
typeName Der Name des Typs, den Ihr x:Array enthalten wird. typeName kann (was häufig der Fall ist) ein Präfix für einen XAML-Namespace haben, der die XAML-Typdefinitionen enthält.
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. Von den hier angegebenen Objekten wird erwartet, dass sie dem XAML-Typ zugeordnet werden können, der in typeName angegeben ist.

Hinweise

Type ist ein erforderliches Attribut für alle x:Array-Objektelemente. Ein Type-Parameterwert muss keine Markuperweiterung x:Typeverwenden. 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 eingegebenen XAML-Typs, nachdem die notwendigen XamlType auf der Grundlage des XAML-Schemakontextes und des vom Kontext bereitgestellten IXamlTypeResolver-Dienstes gesucht wurden.

Bei der Verarbeitung wird der Inhalt des Arrays der ArrayExtension.Items intrinsischen Eigenschaft zugewiesen. In der ArrayExtension-Implementierung wird dies durch ArrayExtension.Items dargestellt.

In der Implementierung von .NET-XAML-Diensten wird die Handhabung dieser 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 mehr für allgemeine Spracherweiterungen in XAML vorgesehen. x:Array kann aber auch nützlich sein, um XAML-Werte bestimmter Eigenschaften anzugeben, die XAML-unterstützte Sammlungen als strukturierten Eigenschaftsinhalt verwenden. Sie können beispielsweise den Inhalt einer IEnumerable-Eigenschaft mit einem x:Array-Verbrauch angeben.

x:Array ist eine Markuperweiterung. Markuperweiterungen werden in der Regel implementiert, wenn Attributwerte mit Escapezeichen versehen werden müssen, damit diese nicht als literale Werte oder als Handlernamen betrachtet werden, und diese Anforderung eher global und nicht nur durch den Einsatz von Typkonvertern für bestimmte Typen oder Eigenschaften erfüllt werden soll. x:Array ist teilweise eine Ausnahme von dieser Regel, denn anstatt alternative Attributwerte zu verwenden, bietet. x:Array bietet einen alternativen Umgang mit seinem inneren Textinhalt. Dieses Verhalten ermöglicht es, Typen, die möglicherweise nicht von einem vorhandenen Inhaltsmodell unterstützt werden, in einem Array zu gruppieren und später im Code-Behind durch Zugriff auf das benannte Array zu referenzieren; Sie können Array-Methoden aufrufen, um einzelne Array-Elemente zu erhalten.

Alle Markup-Erweiterungen in XAML verwenden die geschweiften Klammern ({,}) in ihrer Attributsyntax. Dies ist die Konvention, anhand derer ein XAML-Prozessor erkennt, dass eine Markup-Erweiterung 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 anstelle einer Markuperweiterung ein Sprachgrundtyp definiert. Weitere Informationen finden Sie unter integrierten Typen für allgemeine XAML-Sprachgrundtypen.

Hinweise zur WPF-Verwendung

Typischerweise sind die Objektelemente, die ein x:Array auffüllen, keine Elemente, die im WPF XAML-Namensraum existieren, und erfordern eine Präfix-Zuordnung zu einem nicht standardmäßigen XAML-Namensraum.

Das folgende Beispiel ist ein einfaches Array von zwei Zeichenfolgen, wobei das sys-Präfix (und auch x) auf 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.

Weitere Informationen