Bagikan melalui


Atribut CLR terkait XAML untuk jenis dan pustaka kustom

Topik ini menjelaskan atribut runtime bahasa umum (CLR) yang ditentukan oleh Layanan .NET XAML. Ini juga menjelaskan atribut CLR lain yang didefinisikan dalam .NET yang memiliki skenario terkait XAML untuk aplikasi ke rakitan atau jenis. Rakitan, jenis, atau anggota attributing dengan atribut CLR ini menyediakan informasi sistem jenis XAML yang terkait dengan jenis Anda. Informasi diberikan kepada konsumen XAML yang menggunakan Layanan XAML .NET untuk memproses aliran simpul XAML secara langsung atau melalui pembaca XAML khusus dan penulis XAML.

Menggunakan atribut CLR memerlukan bahwa Anda menggunakan CLR keseluruhan untuk menentukan jenis Anda, jika tidak, atribut tersebut tidak tersedia. Jika Anda menggunakan CLR untuk menentukan pencadangan jenis, maka konteks skema XAML default yang digunakan oleh penulis XAML Layanan XAML .NET dapat membaca atribusi CLR melalui refleksi terhadap rakitan backing.

Bagian berikut menjelaskan atribut terkait XAML yang dapat Anda terapkan ke jenis kustom atau anggota kustom. Setiap atribut CLR mengomunikasikan informasi yang relevan dengan sistem jenis XAML. Di jalur beban, informasi yang diatribusikan membantu pembaca XAML membentuk aliran simpul XAML yang valid, atau membantu penulis XAML menghasilkan grafik objek yang valid. Di jalur penyimpanan, informasi yang diatribusikan membantu pembaca XAML membentuk aliran simpul XAML yang valid yang mempertimbangkan kembali informasi sistem jenis XAML; atau menyatakan petunjuk atau persyaratan serialisasi untuk penulis XAML atau konsumen XAML lainnya.

AmbientAttribute

Dokumentasi Referensi:AmbientAttribute

Berlaku untuk: Anggota kelas, properti, atau get aksesor yang mendukung properti yang dapat dilampirkan.

Argumen: Tidak ada

AmbientAttribute menunjukkan bahwa properti, atau semua properti yang mengambil jenis atribut, harus ditafsirkan di bawah konsep properti sekitar di XAML. Konsep sekitar berkaitan dengan bagaimana prosesor XAML menentukan pemilik jenis anggota. Properti sekitar adalah properti di mana nilai diharapkan tersedia dalam konteks pengurai saat membuat grafik objek, tetapi di mana pencarian tipe-anggota umum ditangguhkan untuk kumpulan simpul XAML segera yang dibuat.

Konsep sekitar dapat diterapkan ke anggota yang dapat dilampirkan, yang tidak diwakili sebagai properti dalam hal bagaimana atribusi CLR mendefinisikan AttributeTargets. Penggunaan atribusi metode harus diterapkan hanya untuk get aksesor yang mendukung penggunaan yang dapat dilampirkan untuk XAML.

ConstructorArgumentAttribute

Dokumentasi Referensi:ConstructorArgumentAttribute

Berlaku untuk: Kelas

Argumen: String yang menentukan nama properti yang cocok dengan argumen konstruktor tunggal.

ConstructorArgumentAttribute menentukan bahwa objek dapat diinisialisasi dengan menggunakan sintaks konstruktor tanpa parameter, dan bahwa properti dari nama yang ditentukan menyediakan informasi konstruksi. Informasi ini terutama untuk serialisasi XAML. Untuk informasi selengkapnya, lihat ConstructorArgumentAttribute .

ContentPropertyAttribute

Dokumentasi Referensi:ContentPropertyAttribute

Berlaku untuk: Kelas

Argumen: String yang menentukan nama anggota dari jenis yang diatribusikan.

ContentPropertyAttribute menunjukkan bahwa properti seperti yang dinamai oleh argumen harus berfungsi sebagai properti konten XAML untuk jenis tersebut. Definisi properti konten XAML mewarisi semua jenis turunan yang dapat ditetapkan ke jenis pendefinisian. Anda dapat mengambil alih definisi pada jenis turunan tertentu dengan menerapkan pada jenis turunan ContentPropertyAttribute tertentu.

Untuk properti yang berfungsi sebagai properti konten XAML, penandaan elemen properti untuk properti dapat dihilangkan dalam penggunaan XAML. Biasanya, Anda menunjuk properti konten XAML yang mempromosikan markup XAML yang disederhanakan untuk konten dan model penahanan Anda. Karena hanya satu anggota yang dapat ditetapkan sebagai properti konten XAML, Anda terkadang memiliki pilihan desain untuk dibuat mengenai properti kontainer mana dari jenis yang harus ditetapkan sebagai properti konten XAML. Properti kontainer lainnya harus digunakan dengan elemen properti eksplisit.

Dalam aliran simpul XAML, properti konten XAML masih menghasilkan StartMember dan EndMember node, menggunakan nama properti untuk XamlMember. Untuk menentukan apakah anggota adalah properti konten XAML, periksa XamlType nilai dari StartObject posisi dan dapatkan nilai ContentProperty.

ContentWrapperAttribute

Dokumentasi Referensi:ContentWrapperAttribute

Berlaku untuk: Kelas, khususnya jenis koleksi.

Argumen: A Type yang menentukan jenis yang akan digunakan sebagai jenis pembungkus konten untuk konten asing.

ContentWrapperAttribute menentukan satu atau beberapa jenis pada jenis koleksi terkait yang akan digunakan untuk membungkus konten asing. Konten asing mengacu pada kasus di mana batasan sistem jenis pada jenis properti konten tidak menangkap semua kemungkinan kasus konten yang akan didukung penggunaan XAML untuk jenis pemilik. Misalnya, dukungan XAML untuk konten jenis tertentu mungkin mendukung string dalam generik Collection<T>yang sangat ditik . Pembungkus konten berguna untuk memigrasikan konvensi markup yang sudah ada sebelumnya ke dalam konsepsi nilai XAML yang dapat ditetapkan untuk koleksi, seperti memigrasikan con mode tenda ls terkait teks.

Untuk menentukan lebih dari satu jenis pembungkus konten, terapkan atribut beberapa kali.

DependsOnAttribute

Dokumentasi Referensi:DependsOnAttribute

Berlaku untuk: Properti

Argumen: String yang menentukan nama anggota lain dari jenis yang diatribusikan.

DependsOnAttribute menunjukkan bahwa properti yang diatribusikan tergantung pada nilai properti lain. Menerapkan atribut ini ke definisi properti memastikan bahwa properti dependen diproses terlebih dahulu dalam penulisan objek XAML. DependsOnAttribute Penggunaan tentukan kasus properti yang luar biasa pada jenis di mana urutan penguraian tertentu harus diikuti untuk pembuatan objek yang valid.

Anda dapat menerapkan beberapa DependsOnAttribute kasus ke definisi properti.

MarkupExtensionReturnTypeAttribute

Dokumentasi Referensi:MarkupExtensionReturnTypeAttribute

Berlaku untuk: Kelas, yang diharapkan menjadi MarkupExtension jenis turunan.

Argumen: A Type yang menentukan jenis yang paling tepat untuk diharapkan sebagai ProvideValue hasil dari atribut MarkupExtension.

Untuk informasi selengkapnya, lihat Ekstensi Markup untuk Gambaran Umum XAML.

NameScopePropertyAttribute

Dokumentasi Referensi:NameScopePropertyAttribute

Berlaku untuk: Kelas

Argumen: Mendukung dua bentuk atribusi:

  • String yang menentukan nama properti pada jenis atribut.

  • String yang menentukan nama properti, dan Type untuk jenis yang menentukan properti bernama. Formulir ini untuk menentukan anggota yang dapat dilampirkan sebagai properti namescope XAML.

NameScopePropertyAttribute menentukan properti yang menyediakan nilai namescope XAML untuk kelas yang diatribusikan. Properti namescope XAML diharapkan mereferensikan objek yang mengimplementasikan INameScope dan menyimpan namescope XAML aktual, penyimpanannya, dan perilakunya.

RuntimeNamePropertyAttribute

Dokumentasi Referensi:RuntimeNamePropertyAttribute

Berlaku untuk: Kelas

Argumen: String yang menentukan nama properti nama run-time pada jenis atribut.

RuntimeNamePropertyAttribute melaporkan properti dari jenis atribut yang memetakan ke XAML x:Name Directive. Properti harus berjenis String dan harus dibaca/ditulis.

Definisi mewarisi semua jenis turunan yang dapat ditetapkan ke jenis pendefinisian. Anda dapat mengambil alih definisi pada jenis turunan tertentu dengan menerapkan pada jenis turunan RuntimeNamePropertyAttribute tertentu.

TrimSurroundingWhitespaceAttribute

Dokumentasi Referensi:TrimSurroundingWhitespaceAttribute

Berlaku untuk: Jenis

Argumen: Tidak ada.

TrimSurroundingWhitespaceAttribute diterapkan ke jenis tertentu yang mungkin muncul sebagai elemen turunan dalam konten signifikan spasi putih (konten yang disimpan oleh koleksi yang memiliki WhitespaceSignificantCollectionAttribute). TrimSurroundingWhitespaceAttribute terutama relevan dengan jalur penyimpanan, tetapi tersedia dalam sistem jenis XAML di jalur beban dengan memeriksa XamlType.TrimSurroundingWhitespace. Untuk informasi selengkapnya, lihat Pemrosesan spasi putih di XAML.

TypeConverterAttribute

Dokumentasi Referensi:TypeConverterAttribute

Berlaku untuk: Kelas, properti, metode (satu-satunya kasus metode yang valid XAML adalah get aksesor yang mendukung anggota yang dapat dilampirkan).

Argumen:Type Dari TypeConverter.

TypeConverterAttribute dalam konteks XAML mereferensikan kustom TypeConverter. Ini TypeConverter menyediakan perilaku konversi jenis untuk jenis kustom, atau anggota jenis tersebut.

Terapkan atribut ke TypeConverterAttribute jenis Anda, merujuk implementasi pengonversi jenis Anda. Anda dapat menentukan jenis pengonversi untuk XAML pada kelas, struktur, atau antarmuka. Anda tidak perlu memberikan konversi jenis untuk enumerasi, konversi tersebut diaktifkan secara asli.

Pengonversi jenis Anda harus dapat mengonversi dari string yang digunakan untuk atribut atau teks inisialisasi dalam markup, ke jenis tujuan yang Anda maksudkan. Untuk informasi selengkapnya, lihat TypeConverters dan XAML.

Daripada menerapkan ke semua nilai jenis, perilaku pengonversi jenis untuk XAML juga dapat dibuat pada properti tertentu. Dalam hal ini, Anda berlaku TypeConverterAttribute untuk definisi properti (definisi luar, bukan definisi dan set spesifikget).

Perilaku pengonversi jenis untuk penggunaan XAML dari anggota yang dapat dilampirkan kustom dapat ditetapkan dengan menerapkan TypeConverterAttribute ke get aksesor metode yang mendukung penggunaan XAML.

Mirip TypeConverterdengan , TypeConverterAttribute ada di .NET sebelum keberadaan XAML, dan model pengonversi jenis melayani tujuan lain. Untuk mereferensikan dan menggunakan TypeConverterAttribute, Anda harus sepenuhnya memenuhi syarat atau memberikan using pernyataan untuk System.ComponentModel. Sertakan juga rakitan Sistem dalam proyek Anda.

UidPropertyAttribute

Dokumentasi Referensi:UidPropertyAttribute

Berlaku untuk: Kelas

Argumen: String yang mereferensikan properti yang relevan berdasarkan nama.

Menunjukkan properti CLR dari kelas yang alias x:Uid Directive.

UsableDuringInitializationAttribute

Dokumentasi Referensi:UsableDuringInitializationAttribute

Berlaku untuk: Kelas

Argumen: Boolean. Jika digunakan untuk tujuan atribut yang dimaksudkan, nilai harus diatur ke true.

Menunjukkan apakah jenis dibangun di atas ke bawah selama pembuatan grafik objek XAML. Ini adalah konsep lanjutan, yang mungkin terkait erat dengan definisi model pemrograman Anda. Untuk informasi selengkapnya, lihat UsableDuringInitializationAttribute .

ValueSerializerAttribute

Dokumentasi Referensi:ValueSerializerAttribute

Berlaku untuk: Kelas, properti, metode (satu-satunya kasus metode yang valid XAML adalah get aksesor yang mendukung anggota yang dapat dilampirkan).

Argumen: A Type yang menentukan kelas dukungan serializer nilai untuk digunakan saat menserialisasikan semua properti dari jenis yang diatribusikan, atau properti atribut tertentu.

ValueSerializer menentukan kelas serialisasi nilai yang memerlukan lebih banyak status dan konteks daripada yang TypeConverter dilakukan. ValueSerializer dapat dikaitkan dengan anggota yang dapat dilampirkan dengan menerapkan ValueSerializerAttribute atribut pada metode aksesor statis get untuk anggota yang dapat dilampirkan. Serialisasi nilai juga berlaku untuk enumerasi, antarmuka, dan struktur, tetapi tidak untuk delegasi.

WhitespaceSignificantCollectionAttribute

Dokumentasi Referensi:WhitespaceSignificantCollectionAttribute

Berlaku untuk: Kelas, khususnya jenis koleksi yang diharapkan untuk menghosting konten campuran, di mana spasi kosong di sekitar elemen objek mungkin signifikan untuk representasi UI.

Argumen: Tidak ada.

WhitespaceSignificantCollectionAttribute menunjukkan bahwa jenis koleksi harus diproses sebagai spasi putih yang signifikan oleh prosesor XAML, yang memengaruhi konstruksi simpul nilai aliran simpul XAML dalam koleksi. Untuk informasi selengkapnya, lihat Pemrosesan spasi putih di XAML.

XamlDeferLoadAttribute

Dokumentasi Referensi:XamlDeferLoadAttribute

Berlaku untuk: Kelas, properti.

Argumen: Mendukung dua jenis formulir atribusi sebagai string, atau jenis sebagai Type. Lihat XamlDeferLoadAttribute.

Menunjukkan bahwa kelas atau properti memiliki penggunaan beban yang ditangguhkan untuk XAML (seperti perilaku templat), dan melaporkan kelas yang memungkinkan perilaku tangguhan dan jenis tujuan/kontennya.

XamlSetMarkupExtensionAttribute

Dokumentasi Referensi:XamlSetMarkupExtensionAttribute

Berlaku untuk: Kelas

Argumen: Menamai panggilan balik.

Menunjukkan bahwa kelas dapat menggunakan ekstensi markup untuk memberikan nilai untuk satu atau beberapa propertinya, dan mereferensikan handler yang harus dipanggil penulis XAML sebelum melakukan operasi set ekstensi markup pada properti kelas apa pun.

XamlSetTypeConverterAttribute

Dokumentasi Referensi:XamlSetTypeConverterAttribute

Berlaku untuk: Kelas

Argumen: Menamai panggilan balik.

Menunjukkan bahwa kelas dapat menggunakan pengonversi jenis untuk memberikan nilai untuk satu atau beberapa propertinya, dan mereferensikan handler yang harus dipanggil penulis XAML sebelum melakukan operasi set konverter jenis pada properti kelas apa pun.

XmlLangPropertyAttribute

Dokumentasi Referensi:XmlLangPropertyAttribute

Berlaku untuk: Kelas

Argumen: String yang menentukan nama properti ke alias ke xml:lang pada jenis atribut.

XmlLangPropertyAttribute melaporkan properti dari jenis atribut yang memetakan ke arahan XML lang . Properti belum tentu berjenis String tetapi harus dapat ditetapkan dari string (penugasan dapat dicapai dengan mengaitkan pengonversi jenis dengan jenis properti atau dengan properti tertentu). Properti harus dibaca/ditulis.

Skenario untuk pemetaan xml:lang adalah agar model objek runtime memiliki akses ke informasi bahasa yang ditentukan XML tanpa memproses secara khusus dengan XMLDOM.

Definisi mewarisi semua jenis turunan yang dapat ditetapkan ke jenis pendefinisian. Anda dapat mengambil alih definisi pada jenis turunan tertentu dengan menerapkan pada jenis turunan XmlLangPropertyAttribute tertentu, meskipun itu adalah skenario yang jarang terjadi.

Bagian berikut menjelaskan atribut terkait XAML yang tidak diterapkan pada jenis atau definisi anggota, tetapi sebaliknya diterapkan ke rakitan. Atribut ini berkaitan dengan tujuan keseluruhan untuk menentukan pustaka yang berisi jenis kustom untuk digunakan dalam XAML. Beberapa atribut tidak selalu memengaruhi aliran simpul XAML secara langsung, tetapi diteruskan dalam aliran simpul untuk digunakan konsumen lain. Konsumen untuk informasi tersebut termasuk lingkungan desain atau proses serialisasi yang memerlukan informasi namespace XAML dan informasi awalan terkait. Konteks skema XAML (termasuk default Layanan XAML .NET) juga menggunakan informasi ini.

XmlnsCompatibleWithAttribute

Dokumentasi Referensi:XmlnsCompatibleWithAttribute

Argumen:

  • String yang menentukan pengidentifikasi namespace XAML ke subsume.

  • String yang menentukan pengidentifikasi namespace XAML yang dapat mensubsume namespace XAML dari argumen sebelumnya.

    XmlnsCompatibleWithAttribute menentukan bahwa namespace XAML dapat disubsidu oleh namespace XAML lain. Biasanya, namespace XAML subsuming ditunjukkan dalam yang ditentukan XmlnsDefinitionAttributesebelumnya . Teknik ini dapat digunakan untuk membuat versi kosakata XAML di pustaka dan membuatnya kompatibel dengan markup yang ditentukan sebelumnya terhadap kosakata versi sebelumnya.

XmlnsDefinitionAttribute

Dokumentasi Referensi:XmlnsDefinitionAttribute

Argumen:

  • String yang menentukan pengidentifikasi namespace XAML yang akan ditentukan.

  • String yang menamai namespace CLR. Namespace CLR harus menentukan jenis publik di rakitan Anda, dan setidaknya salah satu jenis namespace CLR harus ditujukan untuk penggunaan XAML.

    XmlnsDefinitionAttribute menentukan pemetaan berdasarkan per-rakitan antara namespace XAML dan namespace CLR, yang kemudian digunakan untuk resolusi jenis oleh penulis objek XAML atau konteks skema XAML.

    Lebih dari satu XmlnsDefinitionAttribute dapat diterapkan ke rakitan. Ini mungkin dilakukan karena kombinasi alasan berikut:

  • Desain pustaka berisi beberapa namespace CLR untuk organisasi logis akses API run-time; namun, Anda ingin semua jenis di namespace tersebut dapat digunakan XAML dengan merujuk namespace XAML yang sama. Dalam hal ini, Anda menerapkan beberapa XmlnsDefinitionAttribute atribut menggunakan nilai yang sama XmlNamespace tetapi nilai yang berbeda ClrNamespace . Ini sangat berguna jika Anda menentukan pemetaan untuk namespace XAML yang ingin kerangka kerja atau aplikasi Anda menjadi namespace XAML default dalam penggunaan umum.

  • Desain pustaka berisi beberapa namespace CLR, dan Anda menginginkan pemisahan namespace XAML yang disarankan antara penggunaan jenis di namespace CLR tersebut.

  • Anda menentukan namespace CLR di assembly, dan Anda ingin namespace layanan tersebut dapat diakses melalui lebih dari satu namespace XAML. Skenario ini terjadi ketika Anda mendukung beberapa kosakata dengan basis kode yang sama.

  • Anda menentukan dukungan bahasa XAML di satu atau beberapa namespace CLR. Dalam hal ini, nilainya XmlNamespace harus http://schemas.microsoft.com/winfx/2006/xaml.

XmlnsPrefixAttribute

Dokumentasi Referensi:XmlnsPrefixAttribute

Argumen:

  • String yang menentukan pengidentifikasi namespace XAML.

  • String yang menentukan awalan yang direkomendasikan.

    XmlnsDefinitionAttribute menentukan awalan yang direkomendasikan untuk digunakan untuk namespace XAML. Awalan berguna saat menulis elemen dan atribut dalam file XAML yang diserialisasikan oleh Layanan XamlXmlWriterXAML .NET , atau ketika pustaka yang menerapkan XAML berinteraksi dengan lingkungan desain yang memiliki fitur pengeditan XAML.

    Lebih dari satu XmlnsPrefixAttribute dapat diterapkan ke rakitan. Ini mungkin dilakukan karena kombinasi alasan berikut:

  • Rakitan Anda menentukan jenis untuk lebih dari satu namespace XAML. Dalam hal ini, tentukan nilai awalan yang berbeda untuk setiap namespace XAML.

  • Anda mendukung beberapa kosakata, dan Anda menggunakan awalan yang berbeda untuk setiap kosakata dan namespace XAML.

  • Anda menentukan dukungan bahasa XAML di rakitan dan memiliki XmlnsDefinitionAttribute untuk http://schemas.microsoft.com/winfx/2006/xaml. Dalam hal ini, Anda biasanya harus mempromosikan awalan x.

Catatan

Layanan XAML .NET juga mendefinisikan atribut RootNamespaceAttributeterkait XAML . Atribut ini adalah atribut tingkat perakitan untuk dukungan sistem proyek, dan tidak relevan untuk jenis kustom XAML.

Baca juga