Freigeben über


x:TypeArguments-Anweisung

Übergibt einschränkende Typargumente eines generischen Elements an den Konstruktor des generischen Typs.

Verwendung von XAML-Attributen

<object x:TypeArguments="typeString" .../>

XAML-Werte

Wert Beschreibung
object Eine Objektelementdeklaration eines XAML-Typs, der von einem generischen CLR-Typ unterstützt wird. Wenn object auf einen XAML-Typ verweist, der nicht aus dem XAML-Standardnamespace stammt, benötigt object ein Präfix, um den XAML-Namespace anzugeben, in dem object vorhanden ist.
typeString Eine Zeichenfolge, die einen oder mehrere XAML-Typnamen als Zeichenfolgen deklariert, die die Typargumente für den generischen CLR-Typ liefern. Weitere Hinweise zur Syntax finden Sie unter „Hinweise“.

Hinweise

In den meisten Fällen werden die XAML-Typen, die als Informationselement in einer typeString-Zeichenfolge verwendet werden, mit einem Präfix versehen. Typische Typen generischer CLR-Einschränkungen (z. B. Int32 und String) stammen aus CLR-Basisklassenbibliotheken. Diese Bibliotheken sind nicht typischen frameworkspezifischen XAML-Standardnamespaces zugeordnet und erfordern daher für die XAML-Verwendung eine Präfixzuordnung.

Sie können mehrere XAML-Typnamen mithilfe eines Kommas als Trennzeichen angeben.

Wenn die generischen Einschränkungen selbst generische Typen verwenden, können die geschachtelten Argumente für die Einschränkungstypen in Klammern () enthalten sein.

Beachten Sie, dass diese Definition von x:TypeArguments spezifisch für .NET-XAML-Dienste und die Verwendung der CLR-Unterstützung ist. Eine Definition auf Sprachebene finden Sie unter [MS-XAML] Abschnitt 7.3.11.

Anwendungsbeispiele

Nehmen Sie für diese Beispiele an, dass die folgenden XAML-Namespacedefinitionen deklariert sind:

xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib"

List<String>

<scg:List x:TypeArguments="sys:String" ...> instanziiert ein neues Element List<T> mit dem Typargument String.

Dictionary<String,String>

<scg:Dictionary x:TypeArguments="sys:String,sys:String" ...> instanziiert ein neues Element Dictionary<TKey,TValue> mit zwei String-Typargumenten.

Queue<KeyValuePair<String,String>>

<scg:Queue x:TypeArguments="scg:KeyValuePair(sys:String,sys:String)" ...> instanziiert ein neues Element Queue<T>, das die Einschränkung KeyValuePair<TKey,TValue> mit den inneren Einschränkungstypargumenten String und String aufweist.

Generische XAML-Verwendungen in XAML 2006 und WPF

Für die Verwendung von XAML 2006 und XAML, die für WPF-Anwendungen verwendet wird, sind die folgenden Einschränkungen für x:TypeArguments und generische Typverwendungen von XAML im Allgemeinen vorhanden:

  • Nur das Stammelement einer XAML-Datei kann eine generische XAML-Verwendung unterstützen, die auf einen generischen Typ verweist.

  • Das Stammelement muss einem generischen Typ mit mindestens einem Typargument zugeordnet sein. z. B. PageFunction<T>. Die Seitenfunktionen sind das Hauptszenario für die Unterstützung der generischen XAML-Verwendung in WPF.

  • Das XAML-Objektelement des Stammelements für das generische Element muss ebenfalls eine partielle Klasse mithilfe von x:Class deklarieren. Dies gilt auch dann, wenn Sie eine WPF-Buildaktion definieren.

  • x:TypeArguments kann nicht auf geschachtelte generische Einschränkungen verweisen.

XAML 2009 oder XAML 2006 ohne WPF 3.0- oder WPF 3.5-Abhängigkeit

In .NET XAML-Diensten für XAML 2006 oder XAML 2009 werden die WPF-bezogenen Einschränkungen für die generische XAML-Verwendung gelockert. Sie können ein generisches Objektelement an jeder beliebigen Stelle im XAML-Markup instanziieren, die das unterstützende Typsystem und Objektmodell zulassen.

Wenn Sie XAML 2009 anstelle der Zuordnung der CLR-Basistypen verwenden, um XAML-Typen für primitive CLR-Typen abzurufen, können Sie integrierte Typen für allgemeine XAML-Sprachprimitiven als Informationselemente in typeString verwenden. Beispielsweise können Sie Folgendes deklarieren (Präfixzuordnungen werden nicht gezeigt, aber „x“ ist der XAML-Namespace für XAML 2009):

<my:BusinessObject x:TypeArguments="x:String,x:Int32"/>

In WPF und bei Verwendung von .NET Framework 4 oder .NET Core 3.0 (oder höher) können Sie XAML 2009-Features zusammen mit x:TypeArguments verwenden, allerdings nur für lose XAML (XAML ohne Markupkompilierung). Markupkompilierte XAML für WPF und die BAML-Form von XAML unterstützen die XAML 2009-Schlüsselwörter und -Funktionen derzeit nicht. Wenn Sie für die XAML eine Markupkompilierung durchführen müssen, müssen Sie sich an die im Abschnitt Generische XAML-Verwendungen in XAML 2006 und WPF genannten Einschränkungen halten. BAML wird nur in .NET Framework unterstützt.

Weitere Informationen