x:Type – rozšíření značek
Poskytuje objekt CLR Type , který je základním typem pro zadaný typ XAML.
Použití atributu XAML
<object property="{x:Type prefix:typeNameValue}" .../>
Použití elementu objektu XAML
<x:Type TypeName="prefix:typeNameValue"/>
Hodnoty XAML
Hodnota | Popis |
---|---|
prefix |
Nepovinné. Předpona, která mapuje jiný než výchozí obor názvů XAML. Zadání předpony není často nutné. Viz poznámky. |
typeNameValue |
Povinný: Název typu přeložitelný na aktuální výchozí obor názvů XAML; nebo zadanou mapovanou předponu, pokud prefix je zadána. |
Poznámky
Rozšíření x:Type
značek má podobnou funkci jako typeof()
operátor v jazyce C# nebo GetType
operátor v jazyce Microsoft Visual Basic.
Rozšíření x:Type
značek poskytuje chování převodu z řetězce pro vlastnosti, které přebírají typ Type. Vstup je typ XAML. Vztah mezi vstupním typem XAML a výstupním CLR Type spočívá v tom, že výstupem Type je UnderlyingType vstup XamlType, po vyhledání nezbytného XamlType kontextu schématu XAML a IXamlTypeResolver služby, kterou poskytuje kontext.
V .NET XAML Services je zpracování pro toto rozšíření značek definováno TypeExtension třídou.
V konkrétních implementacích architektury mohou některé vlastnosti, které berou Type jako hodnotu, přijmout název typu přímo (řetězcová hodnota typu Name
). Implementace tohoto chování je ale složitý scénář. Příklady najdete v následující části "Poznámky k používání WPF".
Nejčastějším typem syntaxe, která se používá u tohoto rozšíření značek, je syntaxe atributu. Řetězcový token poskytnutý po řetězci identifikátoru x:Type
je přiřazen jako TypeName hodnota podkladové TypeExtension třídy rozšíření. V rámci výchozího kontextu schématu XAML pro služby .NET XAML, která je založená na typech CLR, je hodnota tohoto atributu buď Name požadovaný typ, nebo obsahuje Name předponu pro jiné než výchozí mapování oboru názvů XAML.
Rozšíření x:Type
značek lze použít v syntaxi elementu objektu. V tomto případě se k správné inicializaci rozšíření vyžaduje zadání hodnoty TypeName vlastnosti.
Rozšíření x:Type
značek lze použít také jako podrobný atribut. Toto použití však není typické: <object property="{x:Type TypeName=typeNameValue}" .../>
Poznámky k využití WPF
Výchozí obor názvů XAML a mapování typů
Výchozí obor názvů XAML pro programování WPF obsahuje většinu typů XAML, které potřebujete pro typické scénáře XAML; proto se při odkazování na hodnoty typu XAML často můžete vyhnout předponám. Pokud odkazujete na typ z vlastního sestavení nebo pro typy, které existují v sestavení WPF, ale jsou z oboru názvů CLR, který nebyl namapován na výchozí obor názvů XAML, možná budete muset namapovat předponu. Další informace o předponách, oborech názvů XAML a mapování oborů názvů CLR naleznete v tématu Obory názvů XAML a mapování oborů názvů pro WPF XAML.
Vlastnosti typu, které podporují typename-as-String
WPF podporuje techniky, které umožňují určit hodnotu některých vlastností typu Type bez nutnosti x:Type
použití rozšíření značek. Místo toho můžete hodnotu zadat jako řetězec, který tento typ pojmenuje. Příklady jsou ControlTemplate.TargetType a Style.TargetType. Podpora tohoto chování není poskytována prostřednictvím převaděčů typů nebo rozšíření značek. Místo toho se jedná o odložené chování implementované prostřednictvím FrameworkElementFactory.
Silverlight podporuje podobnou konvenci. Silverlight ve skutečnosti v současné době {x:Type}
nepodporuje svou jazykovou podporu XAML a nepřijímá {x:Type}
použití mimo několik okolností, které jsou určeny k podpoře migrace XAML WPF-Silverlight. Proto je chování typename-as-string integrované pro všechny vyhodnocení nativní vlastnosti Silverlight, kde Type je hodnota.
XAML 2009
XAML 2009 poskytuje další podporu obecných typů a upravuje chování x:TypeArguments
funkcí a x:Type
poskytuje tuto podporu.
x:TypeArguments
a přidružený prvek objektu pro instanci obecného objektu může být na jiných prvcích než kořen. Další informace najdete v oddílu XAML 2009 direktivy x:TypeArguments.XAML 2009 podporuje syntaxi pro zadání omezení obecného typu v kódu. Tuto možnost lze použít pomocí
x:TypeArguments
funkce ,, nebox:Type
pomocí těchto dvou funkcí v kombinaci.Implementace WPF XAML při zpracování XAML 2009 pro načtení také přidá tuto funkci do implicitního chování převodu typů pro určité vlastnosti architektury, které používají typ Type.
Ve WPF můžete použít funkce XAML 2009, ale pouze pro volné XAML (XAML, který není zkompilován značek). Kód XAML zkompilovaný pro WPF a formát BAML XAML v současné době nepodporují klíčová slova a funkce XAML 2009.
Viz také
.NET Desktop feedback