Bagikan melalui


Namespace XAML dan pemetaan namespace

Topik ini menjelaskan pemetaan namespace XML/XAML (xmlns) seperti yang ditemukan di elemen akar sebagian besar file XAML. Ini juga menjelaskan cara menghasilkan pemetaan serupa untuk jenis dan rakitan kustom.

Bagaimana namespace XAML berhubungan dengan definisi kode dan jenis pustaka

Baik dalam tujuan umum maupun untuk aplikasinya ke pemrograman aplikasi Windows Runtime, XAML digunakan untuk mendeklarasikan objek, properti objek tersebut, dan hubungan properti objek yang dinyatakan sebagai hierarki. Objek yang Anda deklarasikan di XAML didukung oleh pustaka jenis atau representasi lain yang ditentukan oleh teknik dan bahasa pemrograman lainnya. Pustaka ini mungkin:

  • Kumpulan objek bawaan untuk Windows Runtime. Ini adalah sekumpulan objek tetap, dan mengakses objek ini dari XAML menggunakan logika pemetaan dan aktivasi jenis internal.
  • Pustaka terdistribusi yang disediakan oleh Microsoft atau oleh pihak ketiga.
  • Pustaka yang mendefinisikan kontrol pihak ketiga yang diintegrasikan ke dalam aplikasi Anda dan didistribusikan ulang melalui paket Anda.
  • Pustaka Anda sendiri, yang merupakan bagian dari proyek Anda dan yang menyimpan beberapa atau semua definisi kode pengguna Anda.

Informasi tipe backing dikaitkan dengan definisi namespace XAML tertentu. Kerangka kerja XAML seperti Windows Runtime dapat menggabungkan beberapa rakitan dan beberapa namespace kode untuk dipetakan ke satu namespace XAML. Ini memungkinkan konsep kosakata XAML yang mencakup kerangka kerja atau teknologi pemrograman yang lebih besar. Kosakata XAML bisa sangat luas—misalnya, sebagian besar XAML yang didokumentasikan untuk aplikasi Windows Runtime dalam referensi ini merupakan kosakata XAML tunggal. Kosakata XAML juga dapat diperluas: Anda memperluasnya dengan menambahkan jenis ke definisi kode pendukung, memastikan untuk menyertakan jenis dalam namespace kode yang sudah digunakan sebagai sumber namespace yang dipetakan untuk kosakata XAML.

Prosesor XAML dapat mencari jenis dan anggota dari rakitan cadangan yang terkait dengan namespace XAML tersebut saat membuat representasi objek run-time. Inilah sebabnya mengapa XAML berguna sebagai cara untuk memformalkan dan bertukar definisi perilaku konstruksi objek, dan mengapa XAML digunakan sebagai teknik definisi UI untuk aplikasi Windows Runtime.

Namespace XAML dalam penggunaan markup XAML umum

File XAML hampir selalu mendeklarasikan namespace XAML default dalam elemen akarnya. Namespace XAML default menentukan elemen mana yang dapat Anda deklarasikan tanpa memenuhi syarat dengan awalan. Misalnya, jika Anda mendeklarasikan elemen <Balloon />, pengurai XAML akan mengharapkan bahwa elemen Balon ada dan valid di namespace XAML default. Sebaliknya, jika Balon tidak berada di namespace XAML default yang ditentukan, Anda harus memenuhi syarat nama elemen tersebut dengan awalan, misalnya <party:Balloon />. Awalan menunjukkan bahwa elemen tersebut ada di namespace XAML yang berbeda dari namespace default, dan Anda harus memetakan namespace XAML ke awalan prefix sebelum Anda dapat menggunakan elemen ini. Namespace XAML berlaku untuk elemen tertentu tempat namespace tersebut dideklarasikan, dan juga ke elemen apa pun yang dimuat oleh elemen tersebut dalam struktur XAML. Untuk alasan ini, namespace XAML hampir selalu dideklarasikan pada elemen akar file XAML untuk memanfaatkan warisan ini.

Deklarasi namespace bahasa default dan deklarasi namespace bahasa XAML

Dalam elemen akar dari sebagian besar file XAML, ada dua deklarasi xmln . Deklarasi pertama memetakan namespace XAML sebagai default: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

Ini adalah pengidentifikasi namespace XAML yang sama yang digunakan dalam beberapa teknologi Microsoft pendahulu yang juga menggunakan XAML sebagai format markup definisi UI. Penggunaan pengidentifikasi yang sama disarankan, dan berguna ketika Anda memigrasikan UI yang ditentukan sebelumnya ke aplikasi Windows Runtime menggunakan C++, C#, atau Visual Basic.

Deklarasi kedua memetakan namespace XAML terpisah untuk elemen bahasa yang ditentukan XAML, memetakannya (biasanya) ke awalan "x:": xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Nilai xmlns ini, yang dipetakan ke awalan "x:", juga identik dengan definisi yang dipakai dalam beberapa teknologi Microsoft pendahulu yang menggunakan XAML.

Hubungan antara deklarasi ini adalah bahwa XAML adalah definisi bahasa, dan Windows Runtime adalah salah satu implementasi yang menggunakan XAML sebagai bahasa dan mendefinisikan kosakata tertentu di mana jenisnya direferensikan dalam XAML.

Bahasa XAML menentukan elemen bahasa tertentu, dan masing-masing harus dapat diakses melalui implementasi prosesor XAML yang bekerja terhadap namespace XAML. Konvensi pemetaan "x:" untuk namespace XAML digunakan dalam templat proyek, kode sampel, dan dokumentasi fitur bahasa. Namespace bahasa XAML menentukan beberapa fitur yang umum digunakan yang diperlukan bahkan untuk aplikasi Windows Runtime dasar. Misalnya, untuk menggabungkan kode apa pun ke file XAML melalui kelas parsial, Anda harus memberi nama kelas tersebut sebagai atribut x:Class dalam elemen akar file XAML yang relevan. Atau, elemen apa pun seperti yang didefinisikan dalam halaman XAML sebagai sumber daya berpenanda kunci dalam ResourceDictionary dan referensi sumber daya XAML harus memiliki atribut x:Key yang diatur pada elemen objek yang dimaksud.

Kode namespace yang memetakan ke namespace XAML default

Berikut ini adalah daftar namespace kode yang saat ini dipetakan ke namespace XAML default.

  • Windows.UI
  • Windows.UI.Xaml
  • Windows.UI.Xaml.Automation
  • Windows.UI.Xaml.Automation.Peers
  • Windows.UI.Xaml.Automation.Provider
  • Windows.UI.Xaml.Automation.Text
  • Windows.UI.Xaml.Controls
  • Windows.UI.Xaml.Controls.Primitives
  • Windows.UI.Xaml.Data
  • Windows.UI.Xaml.Documents
  • Windows.UI.Xaml.Input
  • Windows.UI.Xaml.Interop
  • Windows.UI.Xaml.Markup
  • Windows.UI.Xaml.Media
  • Windows.UI.Xaml.Media.Animation
  • Windows.UI.Xaml.Media.Imaging
  • Windows.UI.Xaml.Media.Media3D
  • Windows.UI.Xaml.Navigation
  • Windows.UI.Xaml.Resources
  • Windows.UI.Xaml.Shapes
  • Windows.UI.Xaml.Threading
  • Windows.UI.Text

Namespace XAML lainnya

Selain namespace bawaan dan namespace XAML "x:" dari bahasa XAML, Anda mungkin juga melihat namespace XAML lain yang dipetakan dalam XAML bawaan awal untuk aplikasi seperti yang dihasilkan oleh Microsoft Visual Studio.

d: (http://schemas.microsoft.com/expression/blend/2008)

Namespace XAML "d:" ditujukan untuk dukungan perancang, khususnya dukungan perancang dalam permukaan desain XAML Microsoft Visual Studio. Namespace XAML" d:" memungkinkan atribut perancang atau waktu desain pada elemen XAML. Atribut perancang ini hanya memengaruhi aspek desain bagaimana XAML berulah. Atribut perancang diabaikan ketika XAML yang sama dimuat oleh pengurai Windows Runtime XAML saat aplikasi berjalan. Umumnya, atribut perancang valid pada elemen XAML apa pun, tetapi dalam praktiknya hanya ada skenario tertentu di mana menerapkan atribut perancang sendiri sesuai. Secara khusus, banyak atribut perancang dimaksudkan untuk memberikan pengalaman yang lebih baik untuk berinteraksi dengan konteks data dan sumber data saat Anda mengembangkan XAML dan kode yang menggunakan pengikatan data.

  • atribut d:DesignHeight dan d:DesignWidth: Atribut ini terkadang diterapkan ke akar file XAML yang dibuat Visual Studio atau permukaan desainer XAML lainnya untuk Anda. Misalnya, atribut ini diatur pada akar UserControl dari XAML yang dibuat jika Anda menambahkan UserControl baru ke proyek aplikasi Anda. Atribut ini memudahkan untuk merancang komposisi konten XAML, sehingga Anda memiliki beberapa antisipasi batasan tata letak yang mungkin ada setelah konten XAML digunakan untuk instans kontrol atau bagian lain dari halaman UI yang lebih besar.

    Nota Jika Anda memigrasikan XAML dari Microsoft Silverlight, Anda mungkin memiliki atribut ini pada elemen root yang mewakili seluruh halaman UI. Anda mungkin ingin menghapus atribut dalam kasus ini. Fitur lain dari perancang XAML seperti simulator mungkin lebih berguna untuk merancang tata letak halaman yang menangani penskalaan dan melihat status dengan baik daripada tata letak halaman ukuran tetap menggunakan d:DesignHeight dan d:DesignWidth.

  • atribut d:DataContext: Anda dapat mengatur atribut ini pada akar halaman atau kontrol untuk menggantikan DataContext eksplisit atau diwariskan yang dimiliki oleh objek tersebut.

  • atribut d:DesignSource: Menentukan sumber data waktu desain untuk CollectionViewSource, menggantikan Sumber.

  • d:DesignInstance dan d:DesignData markup extensions: Ekstensi markup ini digunakan untuk menyediakan sumber daya data waktu desain untuk d:DataContext atau d:DesignSource. Kami tidak akan sepenuhnya mendokumentasikan cara penggunaan sumber daya data waktu desain di sini. Untuk informasi selengkapnya, lihat Atribut Design-Time. Untuk beberapa contoh penggunaan, lihat Contoh data pada permukaan desain, dan untuk prototipe.

mc: (http://schemas.openxmlformats.org/markup-compatibility/2006)

" mc:" menunjukkan dan mendukung mode kompatibilitas markup untuk membaca XAML. Biasanya, awalan "d:" dikaitkan dengan atribut mc:Ignorable. Teknik ini memungkinkan pengurai XAML run-time untuk mengabaikan atribut desain di "d:".

lokal: dan umum:

"local:" adalah awalan yang sering dipetakan secara otomatis untuk Anda dalam halaman XAML untuk proyek aplikasi UWP template. Ini dipetakan untuk merujuk ke namespace yang sama yang dibuat untuk berisi atribut x:Class dan kode untuk semua file XAML termasuk app.xaml. Selama Anda menentukan kelas kustom apa pun yang ingin Anda gunakan di XAML di namespace layanan yang sama ini, Anda dapat menggunakan prefiks lokal: untuk merujuk ke jenis kustom Anda di XAML. Awalan terkait yang berasal dari proyek aplikasi UWP templat adalah umum:. Awalan ini mengacu pada namespace "Umum" berlapis yang berisi kelas utilitas seperti pengonversi dan perintah, dan Anda dapat menemukan definisi di folder Umum dalam tampilan Penjelajah Solusi .

vsm:

Jangan gunakan. "vsm:" adalah awalan yang terkadang terlihat di templat XAML yang lebih lama yang diimpor dari teknologi Microsoft lainnya. Namespace pada awalnya dibuat untuk mengatasi masalah alat namespace yang sudah kuno. Anda harus menghapus definisi namespace XAML untuk "vsm:" di XAML apa pun yang Anda gunakan untuk Windows Runtime, dan mengubah penggunaan awalan apa pun untuk VisualState, VisualStateGroup , dan objek terkait untuk menggunakan namespace XAML default sebagai gantinya. Untuk informasi selengkapnya tentang migrasi XAML, lihat Memigrasikan Silverlight atau WPF XAML/code ke aplikasi Windows Runtime.

Memetakan tipe kustom ke namespace dan awalan XAML

Anda dapat memetakan namespace XAML sehingga Anda dapat menggunakan XAML untuk mengakses jenis kustom Anda sendiri. Dengan kata lain, Anda memetakan namespace kode seperti yang ada dalam representasi kode yang menentukan jenis kustom, dan menetapkannya namespace XAML bersama dengan awalan untuk penggunaan. Jenis kustom untuk XAML dapat ditentukan baik dalam bahasa Microsoft .NET (C# atau Microsoft Visual Basic) atau di C++. Pemetaan dibuat dengan menentukan awalan xmln . Misalnya, xmlns:myTypes mendefinisikan namespace XAML baru yang diakses dengan awalan semua penggunaan dengan token myTypes:.

Definisi xmlns menyertakan nilai serta penamaan awalan. Nilai adalah string yang berada di dalam tanda kutip dan ditempatkan setelah tanda sama dengan. Konvensi XML umum adalah mengaitkan namespace XML dengan Pengidentifikasi Sumber Daya Seragam (URI), sehingga ada konvensi untuk keunikan dan identifikasi. Anda juga melihat konvensi ini untuk namespace XAML default dan bahasa XAML, serta untuk beberapa namespace XAML yang kurang umum digunakan oleh Windows Runtime XAML. Tetapi untuk namespace XAML yang memetakan jenis kustom, alih-alih menentukan URI, Anda memulai definisi awalan dengan token "using:". Setelah token "using:", Anda memberikan nama pada namespace kode.

Misalnya, untuk memetakan awalan "kustom1" yang memungkinkan Anda mereferensikan namespace layanan "CustomClasses", dan menggunakan kelas dari namespace layanan atau rakitan tersebut sebagai elemen objek di XAML, halaman XAML Anda harus menyertakan pemetaan berikut pada elemen root: xmlns:custom1="using:CustomClasses"

Kelas parsial dari cakupan halaman yang sama tidak perlu dipetakan. Misalnya, Anda tidak memerlukan awalan untuk mereferensikan penanganan aktivitas apa pun yang Anda tentukan untuk menangani peristiwa dari definisi XAML UI halaman Anda. Selain itu, banyak halaman XAML awal dari proyek yang dihasilkan Visual Studio untuk aplikasi Windows Runtime sudah memetakan awalan "local:", yang mereferensikan namespace default yang ditentukan proyek dan namespace yang digunakan oleh definisi kelas partial.

Aturan bahasa CLR

Jika Anda menulis kode cadangan Anda dalam bahasa .NET (C# atau Microsoft Visual Basic), Anda mungkin menggunakan konvensi yang menggunakan titik (".") sebagai bagian dari nama namespace untuk membuat hierarki konseptual namespace kode. Jika definisi namespace Anda berisi titik, titik harus menjadi bagian dari nilai yang Anda tentukan setelah token "using:".

Jika file kode-behind atau file definisi kode Anda adalah file C++, ada konvensi tertentu yang masih mengikuti bentuk bahasa dari runtime bahasa umum (CLR), sehingga sintaks XAML tidak mengalami perbedaan. Jika Anda mendeklarasikan namespace berlapis di C++, pemisah antara string namespace berlapis berturut-turut harus "." daripada "::" saat Anda menentukan nilai yang mengikuti token "using:".

Jangan gunakan tipe bersarang (seperti menyusun enumerasi dalam kelas) ketika Anda mendefinisikan kode untuk digunakan dengan XAML. Jenis berlapis tidak dapat dievaluasi. Tidak ada cara bagi pengurai XAML untuk membedakan bahwa titik adalah bagian dari nama tipe bersarang daripada bagian dari nama namespace.

Jenis dan rakitan kustom

Nama assembly yang menentukan tipe pendukung untuk namespace XAML tidak disebutkan dalam pemetaan. Logika ketersediaan rakitan dikontrol pada tingkat definisi aplikasi dan merupakan bagian dari prinsip dasar penyebaran dan keamanan aplikasi. Deklarasikan rakitan apa pun yang ingin Anda sertakan sebagai sumber definisi kode untuk XAML sebagai rakitan dependen dalam pengaturan proyek. Untuk informasi selengkapnya, lihat Membuat komponen Windows Runtime di C# dan Visual Basic.

Jika Anda mereferensikan jenis kustom dari definisi aplikasi utama atau definisi halaman, jenis tersebut tersedia tanpa konfigurasi perakitan dependen lebih lanjut, tetapi Anda masih harus memetakan namespace kode yang berisi jenis tersebut. Konvensi umum adalah memetakan awalan "lokal" untuk namespace kode default dari halaman XAML tertentu. Konvensi ini sering disertakan dalam memulai templat proyek untuk proyek XAML.

Properti terlampir

Jika Anda mereferensikan properti terlampir, komponen tipe pemilik dari nama properti terlampir harus berada di namespace XAML default atau diberi awalan. Jarang sekali atribut diawali secara terpisah dari elemennya, tetapi ini adalah salah satu kasus di mana kadang-kadang diperlukan, terutama untuk properti terkait kustom. Untuk informasi selengkapnya, lihat Properti terlampir kustom.