x:Jenis Ekstensi Markup

Memasok objek Type CLR yang merupakan jenis yang mendasar untuk jenis XAML tertentu.

Penggunaan Atribut XAML

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

Penggunaan Elemen Objek XAML

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

Nilai XAML

Nilai Deskripsi
prefix Fakultatif. Awalan yang memetakan namespace XAML non-default. Menentukan awalan sering kali tidak diperlukan. Lihat Komentar.
typeNameValue Diperlukan. Nama jenis yang dapat diselesaikan ke namespace XAML default saat ini; atau awalan yang dipetakan yang ditentukan jika prefix disediakan.

Komentar

Ekstensi markup x:Type memiliki fungsi yang mirip dengan operator typeof() di C# atau operator GetType di Microsoft Visual Basic.

Ekstensi markup x:Type menyediakan perilaku konversi dari string untuk properti yang mengambil jenis Type. Input adalah jenis XAML. Hubungan antara jenis XAML input dan Type CLR output adalah bahwa Type output adalah UnderlyingType input XamlType, setelah mencari XamlType yang diperlukan berdasarkan konteks skema XAML dan layanan IXamlTypeResolver yang disediakan konteks.

Di Layanan XAML .NET, penanganan untuk ekstensi markup ini ditentukan oleh kelas TypeExtension.

Dalam implementasi kerangka kerja tertentu, beberapa properti yang mengambil Type sebagai nilai dapat menerima nama jenis secara langsung (nilai string jenis Name). Namun, menerapkan perilaku ini adalah skenario yang kompleks. Misalnya, lihat bagian "Catatan Penggunaan WPF" yang mengikutinya.

Sintaks atribut adalah sintaks yang paling umum digunakan dengan ekstensi markup ini. Token string yang disediakan setelah string pengidentifikasi x:Type ditetapkan sebagai nilai TypeName kelas ekstensi TypeExtension yang mendasar. Di bawah konteks skema XAML default untuk Layanan .NET XAML, yang didasarkan pada jenis CLR, nilai atribut ini adalah Name dari jenis yang diinginkan, atau berisi yang Name didahului oleh awalan untuk pemetaan namespace XAML non-default.

Ekstensi markup x:Type dapat digunakan dalam sintaks elemen objek. Dalam hal ini, menentukan nilai properti TypeName diperlukan untuk menginisialisasi ekstensi dengan benar.

Ekstensi markup x:Type juga dapat digunakan sebagai atribut verbose; namun penggunaan ini tidak khas: <object property="{x:Type TypeName=typeNameValue}" .../>

Catatan Penggunaan WPF

Namespace XAML Default dan Pemetaan Jenis

Namespace XAML default untuk pemrograman WPF berisi sebagian besar jenis XAML yang Anda butuhkan untuk skenario XAML yang khas; oleh karena itu, Anda sering dapat menghindari awalan saat mereferensikan nilai jenis XAML. Anda mungkin perlu memetakan awalan jika Anda merujuk jenis dari rakitan kustom atau untuk jenis yang ada di rakitan WPF tetapi berasal dari namespace CLR yang tidak dipetakan ke namespace XAML default. Untuk informasi selengkapnya tentang awalan, namespace XAML, dan pemetaan namespace CLR, lihat Namespace XAML dan Pemetaan Namespace layanan untuk WPF XAML.

Ketik properti yang mendukung typename-as-string

WPF mendukung teknik yang memungkinkan menentukan nilai beberapa properti jenis Type tanpa memerlukan penggunaan ekstensi markup x:Type. Sebagai gantinya, Anda dapat menentukan nilai sebagai string yang menamai jenis. Contohnya adalah ControlTemplate.TargetType dan Style.TargetType. Dukungan untuk perilaku ini tidak disediakan melalui pengonversi jenis atau ekstensi markup. Sebaliknya, ini adalah perilaku penangguhan yang diterapkan melalui FrameworkElementFactory.

Silverlight mendukung konvensi serupa. Bahkan, Silverlight saat ini tidak mendukung {x:Type} dalam dukungan bahasa XAML-nya, dan tidak menerima penggunaan {x:Type} di luar beberapa keadaan yang dimaksudkan untuk mendukung migrasi XAML WPF-Silverlight. Oleh karena itu, perilaku typename-as-string adalah bawaan untuk semua evaluasi properti asli Silverlight di mana Type adalah nilainya.

XAML 2009

XAML 2009 memberikan dukungan tambahan untuk jenis generik dan memodifikasi perilaku fitur x:TypeArguments dan x:Type untuk memberikan dukungan ini.

  • x:TypeArguments dan elemen objek terkait untuk instansiasi objek generik dapat berada pada elemen selain root. Untuk informasi selengkapnya, lihat bagian "XAML 2009" dari x:TypeArguments Directive.

  • XAML 2009 mendukung sintaks untuk menentukan batasan jenis generik dalam markup. Ini dapat digunakan oleh x:TypeArguments, dengan x:Type, atau oleh dua fitur dalam kombinasi.

  • Implementasi WPF XAML saat memproses XAML 2009 untuk beban juga menambahkan kemampuan ini ke perilaku konversi jenis implisit untuk properti kerangka kerja tertentu yang menggunakan jenis Type.

Di WPF, Anda dapat menggunakan fitur XAML 2009 tetapi hanya untuk XAML longgar (XAML yang tidak dikompilasi markup). XAML yang dikompilasi markup untuk WPF dan bentuk BAML XAML saat ini tidak mendukung kata kunci dan fitur XAML 2009.

Lihat juga