Udostępnij za pośrednictwem


x:Type, rozszerzenie znaczników

Dostarcza obiekt Type CLR, który jest typem bazowym dla określonego typu XAML.

Użycie atrybutu XAML

<object property="{x:Type prefix:typeNameValue}" .../>

Użycie elementu obiektu XAML

<x:Type TypeName="prefix:typeNameValue"/>

Wartości XAML

Wartość Opis
prefix Fakultatywny. Prefiks, który mapuje przestrzeń nazw XAML inną niż domyślna. Określanie prefiksu często nie jest konieczne. Zobacz uwagi.
typeNameValue Wymagane. Nazwa typu rozpoznawalna dla bieżącej domyślnej przestrzeni nazw XAML; lub określony zamapowany prefiks, jeśli prefix jest dostarczany.

Uwagi

Rozszerzenie znaczników x:Type ma podobną funkcję do operatora typeof() w języku C# lub operatora GetType w języku Microsoft Visual Basic.

Rozszerzenie znaczników x:Type dostarcza zachowanie konwersji z ciągu dla właściwości, które przyjmują typ Type. Dane wejściowe są typem XAML. Relacja między wejściowym typem XAML a wyjściowym Type CLR polega na tym, że Type danych wyjściowych jest UnderlyingType wejściowych XamlType, po wyszukaniu niezbędnych XamlType opartych na kontekście schematu XAML i usłudze IXamlTypeResolver, którą zapewnia kontekst.

W usługach XAML platformy .NET obsługa tego rozszerzenia znaczników jest definiowana przez klasę TypeExtension.

W określonych implementacjach struktury niektóre właściwości, które przyjmują Type jako wartość, mogą akceptować nazwę typu bezpośrednio (wartość ciągu typu Name). Jednak implementacja tego zachowania jest złożonym scenariuszem. Aby zapoznać się z przykładami, zobacz sekcję "Uwagi dotyczące użycia platformy WPF", która jest następująca.

Składnia atrybutów jest najczęściej używaną składnią z tym rozszerzeniem znaczników. Token ciągu podany po dodaniu ciągu identyfikatora x:Type jako wartości TypeName podstawowej klasy rozszerzenia TypeExtension. W domyślnym kontekście schematu XAML dla usług .NET XAML, który jest oparty na typach CLR, wartość tego atrybutu jest Name żądanego typu lub zawiera, że Name poprzedzony prefiksem dla nie domyślnego mapowania przestrzeni nazw XAML.

Rozszerzenie znaczników x:Type może być używane w składni elementu obiektu. W takim przypadku określenie wartości właściwości TypeName jest wymagane do prawidłowego zainicjowania rozszerzenia.

Rozszerzenie znaczników x:Type może być również używane jako atrybut pełny; jednak to użycie nie jest typowe: <object property="{x:Type TypeName=typeNameValue}" .../>

Uwagi dotyczące użycia platformy WPF

Domyślne mapowanie przestrzeni nazw I typów XAML

Domyślna przestrzeń nazw XAML dla programowania WPF zawiera większość typów XAML potrzebnych w typowych scenariuszach XAML; dlatego często można unikać prefiksów podczas odwoływania się do wartości typów XAML. Może być konieczne mapowanie prefiksu, jeśli odwołujesz się do typu z zestawu niestandardowego lub dla typów, które istnieją w zestawie WPF, ale pochodzą z przestrzeni nazw CLR, która nie została zamapowana na domyślną przestrzeń nazw XAML. Aby uzyskać więcej informacji na temat prefiksów, przestrzeni nazw XAML i mapowania przestrzeni nazw CLR, zobacz przestrzeni nazw XAML i mapowanie przestrzeni nazw dlaWPF XAML.

Właściwości typu, które obsługują typname-as-string

WPF obsługuje techniki, które umożliwiają określanie wartości niektórych właściwości typu Type bez wymagania x:Type użycia rozszerzenia znaczników. Zamiast tego można określić wartość jako ciąg, który nazywa typ. Oto przykłady ControlTemplate.TargetType i Style.TargetType. Obsługa tego zachowania nie jest zapewniana za pośrednictwem konwerterów typów lub rozszerzeń znaczników. Zamiast tego jest to zachowanie odroczenia zaimplementowane za pomocą FrameworkElementFactory.

Program Silverlight obsługuje podobną konwencję. W rzeczywistości program Silverlight nie obsługuje obecnie {x:Type} w obsłudze języka XAML i nie akceptuje {x:Type} użycia poza kilkoma okolicznościami, które mają obsługiwać migrację WPF-Silverlight XAML. W związku z tym zachowanie typename-as-string jest wbudowane we wszystkich natywnych ocenach właściwości silverlight, w których wartość jest Type.

XAML 2009

XAML 2009 zapewnia dodatkową obsługę typów ogólnych i modyfikuje zachowanie funkcji x:TypeArguments i x:Type w celu zapewnienia tej obsługi.

  • x:TypeArguments i skojarzony element obiektu dla wystąpienia obiektu ogólnego może znajdować się na elementach innych niż główny. Aby uzyskać więcej informacji, zobacz sekcję "XAML 2009" x:TypeArguments Directive.

  • Język XAML 2009 obsługuje składnię określającą ograniczenie typu ogólnego w adiustacji. Może to być używane przez x:TypeArguments, przez x:Typelub przez dwie funkcje w połączeniu.

  • Implementacja WPF XAML podczas przetwarzania kodu XAML 2009 na potrzeby ładowania dodaje również tę funkcję do niejawnego zachowania konwersji typów dla niektórych właściwości struktury, które używają typu Type.

W WPF można używać funkcji XAML 2009, ale tylko dla luźnego XAML (XAML, który nie jest skompilowany). Kod XAML skompilowany w języku XAML dla platformy WPF i formularza BAML języka XAML nie obsługuje obecnie słów kluczowych i funkcji XAML 2009.

Zobacz też