Sdílet prostřednictvím


x:Type – rozšíření značek

Poskytuje CLR Type objekt, 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 Volitelný. Předpona, která mapuje jiný než výchozí obor názvů XAML. Zadání předpony není často nutné. Viz poznámky.
typeNameValue Požadovaný. Název typu přeložitelný na aktuální výchozí obor názvů XAML; nebo zadanou mapovanou předponu, pokud je zadána prefix.

Poznámky

Rozšíření x:Type značek má podobnou funkci jako operátor typeof() v jazyce C# nebo GetType 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 Type CLR je, že výstupní Type je UnderlyingType vstupního XamlType, po vyhledání potřebných XamlType na základě kontextu schématu XAML a služby IXamlTypeResolver poskytuje kontext.

V .NET XAML Services je zpracování pro toto rozšíření značek definováno TypeExtension třída.

V konkrétních implementacích architektury mohou některé vlastnosti, které 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".

Syntaxe atributu je nejběžnější syntaxe použitá s tímto rozšířením značek. Řetězcový token poskytnutý za řetězcem identifikátoru x:Type je přiřazen jako TypeName hodnota podkladové třídy rozšíření TypeExtension. 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ého typu, nebo obsahuje Name předponou 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 vlastnosti TypeName.

Rozšíření x:Type značek lze také použít 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í oboru názvů pro WPF XAML.

Vlastnosti typu, které podporují typename-as-String

WPF podporuje techniky, které umožňují zadat hodnotu některých vlastností typu Type bez nutnosti použití rozšíření x:Type 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ě nepodporuje {x:Type} v podpoře jazyka XAML a nepřijímá {x:Type} použití mimo několik okolností, které jsou určeny k podpoře WPF-Silverlight migraci XAML. Proto je chování typename-as-string integrované do všech nativních vlastností Silverlight, kde Type je hodnota.

XAML 2009

XAML 2009 poskytuje další podporu obecných typů a upravuje chování funkcí x:TypeArguments a x:Type, aby tuto podporu poskytoval.

  • 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 naleznete v části XAML 2009 x:TypeArguments direktivy.

  • XAML 2009 podporuje syntaxi pro zadání omezení obecného typu v kódu. Tuto možnost může používat x:TypeArguments, x:Type, nebo dvěma vlastnostmi v kombinaci.

  • Implementace WPF XAML při zpracování XAML 2009 pro načtení také přidává tuto funkci do implicitního chování převodu typů pro určité vlastnosti rozhraní, 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é