Pemetaan namespace XAML dan namespace layanan

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 dalam 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 pemetaan jenis internal dan logika aktivasi.
  • Pustaka terdistribusi yang disediakan baik oleh Microsoft atau oleh pihak ketiga.
  • Pustaka yang mewakili definisi kontrol pihak ketiga yang bergabung dengan aplikasi Anda dan paket Anda didistribusikan ulang.
  • Pustaka Anda sendiri, yang merupakan bagian dari proyek Anda dan yang menyimpan beberapa atau semua definisi kode pengguna Anda.

Info jenis 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 satu kosakata XAML. Kosakata XAML juga dapat diperluas: Anda memperluasnya dengan menambahkan jenis ke definisi kode dukungan, memastikan untuk menyertakan jenis dalam namespace kode yang sudah digunakan sebagai sumber namespace layanan 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 meresmikan dan bertukar definisi perilaku konstruksi objek, dan mengapa XAML digunakan sebagai teknik definisi UI untuk aplikasi UWP.

Namespace XAML dalam penggunaan markup XAML yang khas

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 dalam namespace XAML default yang ditentukan, Anda harus memenuhi syarat nama elemen tersebut dengan awalan, misalnya <party:Balloon />. Awalan menunjukkan bahwa elemen ada di namespace XAML yang berbeda dari namespace default, dan Anda harus memetakan namespace XAML ke pihak awalan sebelum Anda dapat menggunakan elemen ini. Namespace XAML berlaku untuk elemen tertentu tempat mereka dideklarasikan, dan juga untuk elemen apa pun yang dimuat oleh elemen tersebut dalam struktur XAML. Untuk alasan ini, namespace XAML hampir selalu dideklarasikan pada elemen root dari file XAML untuk memanfaatkan pewarisan ini.

Deklarasi namespace XAML bahasa default dan 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 disengaja, dan berguna saat 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, dan awalan "x:" yang dipetakan, juga identik dengan definisi yang digunakan 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 bahasa XAML diikuti oleh templat proyek, kode sampel, dan dokumentasi untuk fitur bahasa. Namespace bahasa XAML mendefinisikan beberapa fitur yang umum digunakan yang diperlukan bahkan untuk aplikasi Windows Runtime dasar menggunakan C++, C#, atau Visual Basic. 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 utama dalam referensi sumber daya ResourceDictionary dan XAML harus memiliki atribut x:Key yang diatur pada elemen objek yang dimaksud.

Namespace kode yang memetakan ke namespace XAML default

Folowing 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 default dan namespace XAML bahasa XAML "x:", Anda mungkin juga melihat namespace XAML lain yang dipetakan di XAML default 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 di 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 tentang bagaimana XAML berkinerja. Atribut perancang diabaikan ketika XAML yang sama dimuat oleh parser XAML Windows Runtime 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 perancang 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.

Catatan 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 mengambil alih DataContext eksplisit atau warisan yang dimiliki objek tersebut.
  • atribut d:DesignSource: Menentukan sumber data waktu desain untuk CollectionViewSource, menimpa 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 mendokumen cara menggunakan 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 membuat 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 dalam "d:".

lokal: dan umum:

"local:" adalah prefiks yang sering dipetakan untuk Anda dalam halaman XAML untuk proyek aplikasi UWP templat. Ini dipetakan untuk merujuk ke namespace yang sama yang dibuat untuk berisi atribut dan kode x:Class untuk semua file XAML termasuk app.xaml. Selama Anda menentukan kelas kustom apa pun yang ingin Anda gunakan di XAML di namespace yang sama ini, Anda dapat menggunakan awalan 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 dalam templat XAML yang lebih lama yang diimpor dari teknologi Microsoft lainnya. Namespace awalnya mengatasi masalah peralatan namespace warisan. 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 jenis 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 mengawali semua penggunaan dengan token myTypes:.

Definisi xmlns menyertakan nilai serta penamaan awalan. Nilai adalah string yang masuk ke dalam tanda kutip, mengikuti 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 namespace XAML bahasa XAML, serta untuk beberapa namespace XAML yang kurang digunakan yang digunakan oleh Windows Runtime XAML. Tetapi untuk namespace XAML yang memetakan jenis kustom, alih-alih menentukan URI, Anda memulai definisi awalan dengan token "menggunakan:". Setelah token "using:", Anda kemudian memberi nama 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 UI XAML halaman Anda. Selain itu, banyak halaman XAML awal dari proyek yang dihasilkan Visual Studio untuk aplikasi Windows Runtime menggunakan C++, C#, atau Visual Basic sudah memetakan awalan "lokal:", yang mereferensikan namespace default yang ditentukan proyek dan namespace yang digunakan oleh definisi kelas parsial.

Aturan bahasa CLR

Jika Anda menulis kode dukungan Anda dalam bahasa .NET (C# atau Microsoft Visual Basic), Anda mungkin menggunakan konvensi yang menggunakan titik (".") sebagai bagian dari nama namespace layanan 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 code-behind atau file definisi kode Anda adalah file C++, ada konvensi tertentu yang masih mengikuti bentuk bahasa umum runtime bahasa umum (CLR), sehingga tidak ada perbedaan dalam sintaks XAML. 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 jenis berlapis (seperti menumpuk enumerasi dalam kelas) saat Anda menentukan kode untuk digunakan dengan XAML. Jenis berlapis tidak dapat dievaluasi. Tidak ada cara bagi pengurai XAML untuk membedakan bahwa titik adalah bagian dari nama jenis berlapis daripada bagian dari nama namespace layanan.

Jenis dan rakitan kustom

Nama rakitan yang menentukan jenis pencadangan untuk namespace XAML tidak ditentukan dalam pemetaan. Logika tempat rakitan tersedia dikontrol pada tingkat definisi aplikasi dan merupakan bagian dari penerapan aplikasi dasar dan prinsip keamanan. Nyatakan perakitan 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 atau definisi halaman aplikasi utama, 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, bagian jenis pemilik dari nama properti terlampir harus berada di namespace XAML default atau diawali. Sangat jarang untuk mengawali atribut secara terpisah dari elemennya tetapi ini adalah satu kasus di mana terkadang diperlukan, terutama untuk properti terlampir kustom. Untuk informasi selengkapnya, lihat Properti terlampir kustom.