x:Type — Rozszerzenie znaczników

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

Użycie atrybutu języka XAML

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

Użycie elementu obiektu języka XAML

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

Wartości XAML

Wartość Opis
prefix Opcjonalny. Prefiks, który mapuje niedomyślną przestrzeń nazw XAML. Określanie prefiksu często nie jest konieczne. Zobacz uwagi.
typeNameValue Wymagane. Nazwa typu rozpoznawana dla bieżącej domyślnej przestrzeni nazw XAML; lub określony zamapowany prefiks, prefix jeśli został podany.

Uwagi

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

Rozszerzenie x:Type znaczników zapewnia zachowanie konwersji z ciągu dla właściwości, które mają typ Type . Dane wejściowe są typem XAML. Relacja między wejściowym typem XAML a wyjściowym clr polega na tym, że dane wyjściowe są obiektem wejściowym , po wyszukiwaniach niezbędnych elementów na podstawie kontekstu schematu XAML i usługi zapewnianej przez Type Type ten UnderlyingType XamlType XamlType IXamlTypeResolver kontekst.

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

W określonych implementacjach struktury niektóre właściwości, które przyjmują jako wartość, mogą bezpośrednio akceptować nazwę typu (wartość ciągu Type typu Name ). Implementacja tego zachowania jest jednak złożonym scenariuszem. Przykłady można znaleźć w sekcji "Uwagi dotyczące użycia WPF" poniżej.

Składnią atrybutu jest składnia najczęściej używana z tym rozszerzeniem znacznika. Token ciągu podany po ciągu x:Type identyfikatora jest przypisywany TypeName jako wartość bazowej klasy TypeExtension rozszerzenia. W domyślnym kontekście schematu XAML dla usług XAML .NET, który jest oparty na typach CLR, wartość tego atrybutu jest albo żądanym typem, albo zawiera prefiks dla mapowania przestrzeni nazw XAML innych niż Name Name domyślne.

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

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

Uwagi dotyczące użycia WPF

Domyślna przestrzeń nazw XAML i mapowanie typów

Domyślna przestrzeń nazw XAML dla programowania WPF zawiera większość typów XAML potrzebnych w typowych scenariuszach XAML. W związku z tym często można uniknąć prefiksów podczas odwoływania się do wartości typu XAML. Może być konieczne zamapowanie prefiksu, jeśli odwołujesz się do typu z zestawu niestandardowego lub typów, które istnieją w zestawie WPF, ale są z przestrzeni nazw CLR, która nie została zamapowana do domyślnej przestrzeni nazw XAML. Aby uzyskać więcej informacji o prefiksach, przestrzeniach nazw XAML i mapowaniu przestrzeni nazw CLR, zobacz Xaml Namespaces (Przestrzenie nazw XAML) i Namespace Mapping for WPF XAML (Mapowanie przestrzeni nazw dla WPF XAML).

Właściwości typu, które obsługują typnazwa jako ciąg

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

Program Silverlight obsługuje podobną konwencję. W rzeczywistości program Silverlight nie obsługuje obecnie obsługi języka XAML i nie akceptuje użycia poza kilkoma okolicznościami, które są przeznaczone do obsługi WPF-Silverlight {x:Type} {x:Type} xaml. W związku z tym zachowanie typename-as-string jest wbudowane we wszystkie oceny właściwości natywnych silverlight gdzie a Type jest wartością.

XAML 2009

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

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

  • Język XAML 2009 obsługuje składnię określania ograniczenia typu ogólnego w znacznikach. Może to być używane przez x:TypeArguments , przez , lub przez dwie funkcje w x:Type kombinacji.

  • Implementacja WPF XAML podczas przetwarzania kodu XAML 2009 dla obciążenia dodaje również tę możliwość do niejawnej konwersji typu 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 kompilowany na podstawie znaczników). Skompilowany na podstawie znaczników kod XAML dla WPF i forma BAML języka XAML nie obsługują obecnie słów kluczowych i funkcji JĘZYKA XAML 2009.

Zobacz też