x:Type Markeringsextensie
Levert het CLR-Type-object dat het onderliggende type is voor een opgegeven XAML-type.
XAML-kenmerkgebruik
<object property="{x:Type prefix:typeNameValue}" .../>
Gebruik van XAML-objectelementen
<x:Type TypeName="prefix:typeNameValue"/>
XAML-waarden
Waarde | Beschrijving |
---|---|
prefix |
Facultatief. Een voorvoegsel waarmee een niet-standaard XAML-naamruimte wordt toegewezen. Het opgeven van een voorvoegsel is vaak niet nodig. Zie opmerkingen. |
typeNameValue |
Vereist. Een typenaam die kan worden omgezet in de huidige standaard XAML-naamruimte; of het opgegeven toegewezen voorvoegsel als prefix wordt opgegeven. |
Opmerkingen
De x:Type
-markeringsextensie heeft een vergelijkbare functie als de operator typeof()
in C# of de operator GetType
in Microsoft Visual Basic.
De x:Type
markeringsextensie levert een conversiegedrag van tekenreeksen voor eigenschappen die het type Type. De invoer is een XAML-type. De relatie tussen het XAML-invoertype en de uitvoer-CLR-Type is dat de uitvoer Type de UnderlyingType van de invoer-XamlTypeis, nadat u de benodigde XamlType hebt opgezoekd op basis van de XAML-schemacontext en de IXamlTypeResolver service die de context biedt.
In .NET XAML Services wordt de verwerking voor deze markeringsextensie gedefinieerd door de TypeExtension-klasse.
In specifieke framework-implementaties kunnen sommige eigenschappen die Type als waarde nemen, de naam van het type rechtstreeks accepteren (de tekenreekswaarde van het type Name
). Het implementeren van dit gedrag is echter een complex scenario. Zie de sectie WPF-gebruiksnotities hieronder voor voorbeelden.
Kenmerksyntaxis is de meest voorkomende syntaxis die wordt gebruikt met deze markeringsextensie. Het tekenreekstoken dat is opgegeven nadat de x:Type
id-tekenreeks is toegewezen als de TypeName waarde van de onderliggende TypeExtension-extensieklasse. Onder de standaardcontext van het XAML-schema voor .NET XAML Services, die is gebaseerd op CLR-typen, is de waarde van dit kenmerk de Name van het gewenste type of bevat die Name voorafgegaan door een voorvoegsel voor een niet-standaard XAML-naamruimtetoewijzing.
De x:Type
markeringsextensie kan worden gebruikt in de syntaxis van objectelementen. In dit geval is het opgeven van de waarde van de eigenschap TypeName vereist om de extensie correct te initialiseren.
De x:Type
markeringsextensie kan ook worden gebruikt als een uitgebreid kenmerk; dit gebruik is echter niet gebruikelijk: <object property="{x:Type TypeName=typeNameValue}" .../>
Opmerkingen bij WPF-gebruik
Standaardnaamruimte en typetoewijzing van XAML
De standaard XAML-naamruimte voor WPF-programmering bevat de meeste XAML-typen die u nodig hebt voor typische XAML-scenario's; Daarom kunt u vaak voorvoegsels voorkomen bij het verwijzen naar XAML-typewaarden. Mogelijk moet u een voorvoegsel toewijzen als u verwijst naar een type uit een aangepaste assembly of voor typen die bestaan in een WPF-assembly, maar afkomstig zijn van een CLR-naamruimte die niet is toegewezen aan de standaardnaamruimte XAML. Zie voor meer informatie over voorvoegsels, XAML-naamruimten en het toewijzen van CLR-naamruimten XAML-naamruimten en naamruimtetoewijzing voor WPF XAML-.
Typeeigenschappen die ondersteuning bieden voor Typename-as-String
WPF ondersteunt technieken die het opgeven van de waarde van bepaalde eigenschappen van het type Type mogelijk maken zonder dat hiervoor een x:Type
gebruik van markeringsuitbreidingen is vereist. In plaats daarvan kunt u de waarde opgeven als een tekenreeks die het type een naam geeft. Voorbeelden hiervan zijn ControlTemplate.TargetType en Style.TargetType. Ondersteuning voor dit gedrag wordt niet geboden via conversieprogramma's of markeringsextensies van het type. In plaats daarvan is dit een uitstelgedrag dat wordt geïmplementeerd via FrameworkElementFactory.
Silverlight ondersteunt een vergelijkbare conventie. Silverlight biedt momenteel geen ondersteuning voor {x:Type}
in de XAML-taalondersteuning en accepteert geen {x:Type}
gebruik buiten enkele omstandigheden die zijn bedoeld ter ondersteuning van WPF-Silverlight XAML-migratie. Daarom is het gedrag van typename-as-string ingebouwd in alle systeemeigen silverlight-eigenschapsevaluatie waarbij een Type de waarde is.
XAML 2009
XAML 2009 biedt aanvullende ondersteuning voor algemene typen en wijzigt het functiegedrag van x:TypeArguments
en x:Type
om deze ondersteuning te bieden.
x:TypeArguments
en het bijbehorende objectelement voor een algemene object-instantiering kunnen zich op andere elementen dan de hoofdmap bevinden. Zie de sectie "XAML 2009" van x:TypeArguments Directivevoor meer informatie.XAML 2009 ondersteunt een syntaxis voor het opgeven van de beperking van een algemeen type in markeringen. Dit kan worden gebruikt door
x:TypeArguments
, doorx:Type
of door de twee functies in combinatie.WPF XAML-implementatie bij het verwerken van XAML 2009 voor belasting voegt deze mogelijkheid ook toe aan het impliciete typeconversiegedrag voor bepaalde frameworkeigenschappen die gebruikmaken van het type Type.
In WPF kunt u XAML 2009-functies gebruiken, maar alleen voor losse XAML (XAML die niet is gecompileerd met opmaak). Gecompileerde XAML voor WPF en de BAML-vorm van XAML bieden momenteel geen ondersteuning voor de trefwoorden en functies van XAML 2009.
Zie ook
.NET Desktop feedback