x:TypeArguments-Anweisungx:TypeArguments Directive

Übergibt einschränkende Typargumente eines generischen an den Konstruktor des generischen Typs.Passes constraining type arguments of a generic to the constructor of the generic type.

Verwendung von XAML-AttributenXAML Attribute Usage

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

XAML-WerteXAML Values

object Eine Objekt Element Deklaration eines XAML-Typs, der durch einen generischen CLR-Typ unterstützt wird.An object element declaration of a XAML type, which is backed by a CLR generic type. Wenn object auf einen XAML-Typ verweist, der nicht aus dem XAML-Standard Namespace gehört, object erfordert ein Präfix, um den XAML-Namespace anzugeben, in dem object vorhanden ist.If object refers to a XAML type that is not from the default XAML namespace, object requires a prefix to indicate the XAML namespace where object exists.
typeString Eine Zeichenfolge, die einen oder mehrere XAML-Typnamen als Zeichen folgen deklariert, die die Typargumente für den generischen CLR-Typ bereitstellt.A string that declares one or more XAML type names as strings, which supplies the type arguments for the CLR generic type. Weitere Informationen zur Syntax finden Sie in den hinweisen.See Remarks for additional syntax notes.

HinweiseRemarks

In den meisten Fällen werden die XAML-Typen, die als Informationselement in einer typeString Zeichenfolge verwendet werden, als Präfix vorangestellt.In most cases, the XAML types that are used as an information item in a typeString string are prefixed. Typische Typen von generischen CLR Int32 -Einschränkungen (z. b. und String) stammen aus CLR-Basisklassen Bibliotheken.Typical types of CLR generic constraints (for example, Int32 and String) come from CLR base class libraries. Diese Bibliotheken sind nicht typischen Framework-spezifischen XAML-Standard Namespaces zugeordnet und erfordern daher eine Präfix Zuordnung für die XAML-Verwendung.Those libraries are not mapped to typical framework-specific default XAML namespaces, and therefore, require a prefix mapping for XAML usage.

Sie können mehr als einen XAML-Typnamen angeben, indem Sie ein Komma Trennzeichen verwenden.You can specify more than one XAML type name by using a comma delimiter.

Wenn die generischen Einschränkungen selbst generische Typen verwenden, können die Argumente der geschachtelten Einschränkungs Typen in Klammern () enthalten sein.If the generic constraints themselves use generic types, the nested constraint type arguments can be contained by parentheses ().

Beachten Sie, dass diese x:TypeArguments Definition von für .NET Framework XAML-Dienste und die Verwendung von CLR-Unterstützung spezifisch ist.Note that this definition of x:TypeArguments is specific to .NET Framework XAML Services and using CLR backing. Eine Definition auf Sprachebene finden Sie im [Abschnitt 5.3.11 des MS-XAML] -Abschnitts.A language-level definition can be found in [MS-XAML] Section 5.3.11.

Verwendungs BeispieleUsage Examples

Nehmen Sie für diese Beispiele an, dass die folgenden XAML-Namespace Definitionen deklariert sind:For these examples, assume that the following XAML namespace definitions are declared:

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

Listen<Zeichenfolge >List<String>

<scg:List x:TypeArguments="sys:String" ...>instanziiert ein neues List<T> -Argument String mit einem Typargument.<scg:List x:TypeArguments="sys:String" ...> instantiates a new List<T> with a String type argument.

Wörter<Buch Zeichenfolge, String >Dictionary<String,String>

<scg:Dictionary x:TypeArguments="sys:String,sys:String" ...>instanziiert eine neue Dictionary<TKey,TValue> mit zwei String Typargumenten.<scg:Dictionary x:TypeArguments="sys:String,sys:String" ...> instantiates a new Dictionary<TKey,TValue> with two String type arguments.

Queue<KeyValuePair<String,String>>Queue<KeyValuePair<String,String>>

<scg:Queue x:TypeArguments="scg:KeyValuePair(sys:String,sys:String)" ...>instanziiert einen neuen Queue<T> , der über eine Einschränkung KeyValuePair<TKey,TValue> von mit den inneren Einschränkungs String Typargumenten und Stringverfügt.<scg:Queue x:TypeArguments="scg:KeyValuePair(sys:String,sys:String)" ...> instantiates a new Queue<T> that has a constraint of KeyValuePair<TKey,TValue> with the inner constraint type arguments String and String.

XAML 2006 und allgemeine WPF-XAML-VerwendungenXAML 2006 and WPF Generic XAML Usages

Bei der Verwendung von XAML 2006 und XAML, die für WPF-Anwendungen verwendet werden, gibt es x:TypeArguments die folgenden Einschränkungen für und generische typverwendungen von XAML im allgemeinen:For XAML 2006 usage, and XAML that is used for WPF applications, the following restrictions exist for x:TypeArguments and generic type usages from XAML in general:

  • Nur das Stamm Element einer XAML-Datei kann eine generische XAML-Verwendung unterstützen, die auf einen generischen Typ verweist.Only the root element of a XAML file can support a generic XAML usage that references a generic type.

  • Das root-Element muss einem generischen Typ mit mindestens einem Typargument zugeordnet werden.The root element must map to a generic type with at least one type argument. Ein Beispiel hierfür PageFunction<T>ist.An example is PageFunction<T>. Die Seitenfunktionen sind das primäre Szenario für die generische Verwendung von XAML in WPF.The page functions are the primary scenario for XAML generic usage support in WPF.

  • Das Stamm Element-XAML-Objekt Element für den generischen muss ebenfalls mithilfe x:Classvon eine partielle Klasse deklarieren.The root element XAML object element for the generic must also declare a partial class using x:Class. Dies gilt auch, wenn Sie eine WPF-Buildaktion definieren.This is true even if defining a WPF build action.

  • x:TypeArgumentsauf die generischen generischen Einschränkungen kann nicht verwiesen werden.x:TypeArguments cannot reference nested generic constraints.

XAML 2009 oder XAML 2006 ohne WPF 3,0 oder WPF 3,5-AbhängigkeitXAML 2009 or XAML 2006 with No WPF 3.0 or WPF 3.5 Dependency

In .NET Framework XAML-Dienste für XAML 2006 oder XAML 2009 werden die WPF-bezogenen Einschränkungen bei der generischen XAML-Verwendung gelockert.In .NET Framework XAML Services for either XAML 2006 or XAML 2009, the WPF-related restrictions on generic XAML usage are relaxed. Sie können ein generisches Objekt Element an einer beliebigen Position in XAML-Markup instanziieren, die das Unterstützungs-Typsystem und das Objektmodell unterstützen können.You can instantiate a generic object element at any position in XAML markup that the backing type system and object model can support.

Wenn Sie XAML 2009 anstelle der Zuordnung der CLR-Basis Typen zum Abrufen von XAML-Typen für allgemeine sprach primitive verwenden, können Sie integrierte Typen für allgemeine XAML-sprach primitive als Informationselemente in einem typeStringverwenden.If you use XAML 2009 instead of mapping the CLR base types to obtain XAML types for common language primitives, you can use Built-in Types for Common XAML Language Primitives as information items in a typeString. Sie könnten z. b. Folgendes deklarieren (Präfix Zuordnungen werden nicht angezeigt, aber x ist der XAML-sprach Namespace XAML-Namespace für XAML 2009):For example, you could declare the following (prefix mappings not shown, but x is the XAML language XAML namespace for XAML 2009):

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

In WPF und beim Ziel .NET Framework 4 können Sie XAML 2009-Funktionen zusammen mit x:TypeArguments verwenden, aber nur für Loose XAML (XAML, das nicht Markup kompiliert ist).In WPF and when targeting .NET Framework 4, you can use XAML 2009 features together with x:TypeArguments but only for loose XAML (XAML that is not markup-compiled). Markupkompilierte XAML für WPF und die BAML-Form von XAML unterstützen die XAML 2009-Schlüsselwörter und -Funktionen derzeit nicht.Markup-compiled XAML for WPF and the BAML form of XAML do not currently support the XAML 2009 keywords and features. Wenn Sie das XAML-Markup kompilieren müssen, müssen Sie unter den im Abschnitt "generische XAML-Verwendungen von XAML 2006 und WPF" notierten Einschränkungen arbeiten.If you need to markup compile the XAML, you must operate under the restrictions noted in the "XAML 2006 and WPF Generic XAML Usages" section.

Siehe auchSee also