Bagikan melalui


x:Ketik Ekstensi Markup

Menyediakan objek CLR Type 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 Opsional. Awalan yang memetakan namespace XAML non-default. Menentukan awalan sering kali tidak diperlukan. Lihat Keterangan.
typeNameValue Harus diisi. Nama jenis yang dapat diselesaikan ke namespace XAML default saat ini; atau awalan yang dipetakan yang ditentukan jika prefix disediakan.

Keterangan

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

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

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

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 x:Type string pengidentifikasi ditetapkan sebagai TypeName nilai kelas ekstensi yang mendasar TypeExtension . Di bawah konteks skema XAML default untuk Layanan XAML .NET, yang didasarkan pada jenis CLR, nilai atribut ini adalah Name jenis yang diinginkan, atau berisi yang Name didahului oleh awalan untuk pemetaan namespace XAML non-default.

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

x:Type Ekstensi markup 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 x:Type penggunaan ekstensi markup. 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 penahanan yang diterapkan melalui FrameworkElementFactory.

Silverlight mendukung konvensi serupa. Bahkan, Silverlight saat ini tidak mendukung {x:Type} dukungan bahasa XAML-nya, dan tidak menerima {x:Type} penggunaan 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 adalah Type nilainya.

XAML 2009

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

  • x:TypeArguments dan elemen objek terkait untuk instansiasi objek generik dapat berada pada elemen selain akar. 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 , oleh x:TypeArgumentsx: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.

Baca juga