Ringkasan XAML

Artikel ini memperkenalkan bahasa XAML dan konsep XAML ke audiens pengembang aplikasi Windows Runtime, dan menjelaskan berbagai cara untuk mendeklarasikan objek dan mengatur atribut di XAML karena digunakan untuk membuat aplikasi Windows Runtime.

Apa itu XAML?

Extensible Application Markup Language (XAML) adalah bahasa deklaratif. Secara khusus, XAML dapat menginisialisasi objek dan mengatur properti objek menggunakan struktur bahasa yang menunjukkan hubungan hierarki antara beberapa objek dan konvensi jenis pendukung yang mendukung ekstensi jenis. Anda dapat membuat elemen UI yang terlihat dalam markup XAML deklaratif. Anda kemudian dapat mengaitkan file code-behind terpisah untuk setiap file XAML yang dapat merespons peristiwa dan memanipulasi objek yang awalnya Anda deklarasikan di XAML.

Bahasa XAML mendukung pertukaran sumber antara alat dan peran yang berbeda dalam proses pengembangan, seperti bertukar sumber XAML antara alat desain dan lingkungan pengembangan interaktif (IDE) atau antara pengembang utama dan pengembang lokalisasi. Dengan menggunakan XAML sebagai format pertukaran, peran perancang dan peran pengembang dapat dipisahkan atau dipertemukan, dan perancang dan pengembang dapat melakukan iterasi selama produksi aplikasi.

Saat Anda melihatnya sebagai bagian dari proyek aplikasi Windows Runtime Anda, file XAML adalah file XML dengan ekstensi nama file .xaml.

Sintaks XAML dasar

XAML memiliki sintaks dasar yang dibangun pada XML. Menurut definisi, XAML yang valid juga harus berupa XML yang valid. Tetapi XAML juga memiliki konsep sintaks yang diberi arti yang berbeda dan lebih lengkap sambil tetap valid dalam XML sesuai spesifikasi XML 1.0. Misalnya, XAML mendukung sintaks elemen properti, di mana nilai properti dapat diatur dalam elemen daripada sebagai nilai string dalam atribut atau sebagai konten. Untuk XML reguler, elemen properti XAML adalah elemen dengan titik dalam namanya, sehingga valid untuk XML biasa tetapi tidak memiliki arti yang sama.

XAML dan Visual Studio

Microsoft Visual Studio membantu Anda menghasilkan sintaks XAML yang valid, baik di editor teks XAML maupun di permukaan desain XAML yang lebih berorientasi grafis. Saat Anda menulis XAML untuk aplikasi menggunakan Visual Studio, jangan terlalu khawatir tentang sintaks dengan setiap penekanan tombol. IDE mendorong sintaks XAML yang valid dengan memberikan petunjuk pelengkapan otomatis, memperlihatkan saran dalam daftar dan dropdown Microsoft IntelliSense, memperlihatkan pustaka elemen UI di jendela Kotak Alat , atau teknik lainnya. Jika ini adalah pengalaman pertama Anda dengan XAML, mungkin masih berguna untuk mengetahui aturan sintaks dan terutama terminologi yang terkadang digunakan untuk menggambarkan batasan atau pilihan saat menjelaskan sintaks XAML dalam referensi atau topik lainnya. Titik-titik halus sintaks XAML tercakup dalam topik terpisah, panduan sintaks XAML.

Namespace XAML

Dalam pemrograman umum, namespace adalah konsep pengorganisasian yang menentukan bagaimana pengidentifikasi untuk entitas pemrograman ditafsirkan. Dengan menggunakan namespace, kerangka kerja pemrograman dapat memisahkan pengidentifikasi yang dideklarasikan pengguna dari pengidentifikasi yang dideklarasikan kerangka kerja, membedakan pengidentifikasi melalui kualifikasi namespace, menerapkan aturan untuk nama cakupan, dan sebagainya. XAML memiliki konsep namespace XAML sendiri yang melayani tujuan ini untuk bahasa XAML. Berikut cara XAML menerapkan dan memperluas konsep namespace bahasa XML:

  • XAML menggunakan xmln atribut XML yang dicadangkan untuk deklarasi namespace. Nilai atribut biasanya adalah Pengidentifikasi Sumber Daya Seragam (URI), yang merupakan konvensi yang diwarisi dari XML.
  • XAML menggunakan awalan dalam deklarasi untuk mendeklarasikan namespace layanan non-default, dan penggunaan awalan dalam elemen dan atribut referensi namespace tersebut.
  • XAML memiliki konsep namespace default, yang merupakan namespace layanan yang digunakan ketika tidak ada prefiks yang ada dalam penggunaan atau deklarasi. Namespace default dapat didefinisikan secara berbeda untuk setiap kerangka kerja pemrograman XAML.
  • Definisi namespace mewarisi dalam file atau konstruksi XAML, dari elemen induk hingga elemen turunan. Misalnya, jika Anda menentukan namespace di elemen akar file XAML, semua elemen dalam file tersebut mewarisi definisi namespace tersebut. Jika elemen lebih jauh ke dalam halaman menentukan ulang namespace, turunan elemen tersebut mewarisi definisi baru.
  • Atribut elemen mewarisi namespace elemen. Cukup jarang melihat awalan pada atribut XAML.

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. Untuk proyek aplikasi Windows Runtime umum, namespace default ini berisi semua kosakata XAML bawaan untuk Windows Runtime yang digunakan untuk definisi UI: kontrol default, elemen teks, grafik dan animasi XAML, jenis dukungan pengikatan data dan gaya, dan sebagainya. Sebagian besar XAML yang akan Anda tulis untuk aplikasi Windows Runtime dengan demikian akan dapat menghindari penggunaan namespace XAML dan awalan saat merujuk ke elemen UI umum.

Berikut adalah cuplikan yang memperlihatkan akar halaman awal yang dibuat Page templat untuk aplikasi (hanya menampilkan tag pembuka, dan disederhanakan). Ini mendeklarasikan namespace default dan juga namespace x (yang akan kami jelaskan selanjutnya).

<Page
    x:Class="Application1.BlankPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
>

Namespace XAML bahasa XAML

Salah satu namespace XAML tertentu yang dideklarasikan dalam hampir setiap file XAML Windows Runtime adalah namespace bahasa XAML. Namespace layanan ini mencakup elemen dan konsep yang ditentukan oleh spesifikasi bahasa XAML. Menurut konvensi, namespace XAML berbahasa XAML dipetakan ke awalan "x". Proyek default dan templat file untuk proyek aplikasi Windows Runtime selalu menentukan namespace XAML default (tanpa awalan, hanya xmlns=) dan namespace XAML bahasa XAML (awalan "x") sebagai bagian dari elemen akar.

Namespace XAML awalan "x"/XAML-language berisi beberapa konstruksi pemrograman yang sering Anda gunakan di XAML Anda. Berikut adalah yang paling umum:

Istilah Deskripsi
x:Kunci Mengatur kunci unik yang ditentukan pengguna untuk setiap sumber daya dalam XAML ResourceDictionary. String token kunci adalah argumen untuk ekstensi markup StaticResource , dan Anda menggunakan kunci ini nanti untuk mengambil sumber daya XAML dari penggunaan XAML lain di tempat lain di XAML aplikasi Anda.
x:Kelas Menentukan namespace kode dan nama kelas kode untuk kelas yang menyediakan kode di belakang untuk halaman XAML. Ini menamai kelas yang dibuat atau digabungkan dengan tindakan build saat Anda membuat aplikasi. Tindakan build ini mendukung pengompilasi markup XAML dan menggabungkan markup dan code-behind Anda saat aplikasi dikompilasi. Anda harus memiliki kelas seperti itu untuk mendukung kode belakang untuk halaman XAML. Window.Content dalam model aktivasi Windows Runtime default.
x:Name Menentukan nama objek run-time untuk instans yang ada dalam kode run-time setelah elemen objek yang ditentukan dalam XAML diproses. Anda dapat menganggap pengaturan x:Name di XAML seperti mendeklarasikan variabel bernama dalam kode. Seperti yang akan Anda pelajari nanti, itulah yang terjadi ketika XAML Anda dimuat sebagai komponen aplikasi Windows Runtime.
CatatanName adalah properti serupa dalam kerangka kerja, tetapi tidak semua elemen mendukungnya. Gunakan x:Name untuk identifikasi elemen setiap kali FrameworkElement.Name tidak didukung pada jenis elemen tersebut.
x:Uid Mengidentifikasi elemen yang harus menggunakan sumber daya yang dilokalkan untuk beberapa nilai propertinya. Untuk informasi selengkapnya tentang cara menggunakan x:Uid, lihat Mulai Cepat: Menerjemahkan sumber daya UI.
Jenis data intrinsik XAML Jenis ini dapat menentukan nilai untuk jenis nilai sederhana saat diperlukan untuk atribut atau sumber daya. Jenis intrinsik ini sesuai dengan jenis nilai sederhana yang biasanya didefinisikan sebagai bagian dari setiap definisi intrinsik bahasa pemrograman. Misalnya, Anda mungkin memerlukan objek yang mewakili nilai Boolean sejati untuk digunakan dalam ObjectAnimationUsingKeyFrames status visual papan cerita. Untuk nilai tersebut di XAML, Anda akan menggunakan jenis intrinsik x:Boolean sebagai elemen objek, seperti ini: <x:Boolean>True</x:Boolean>

Konstruksi pemrograman lain dalam namespace XAML bahasa XAML ada tetapi tidak sama umum.

Memetakan jenis kustom ke namespace XAML

Salah satu aspek paling kuat dari XAML sebagai bahasa adalah mudah untuk memperluas kosakata XAML untuk aplikasi Windows Runtime Anda. Anda dapat menentukan jenis kustom Anda sendiri dalam bahasa pemrograman aplikasi Anda lalu mereferensikan jenis kustom Anda di markup XAML. Dukungan untuk ekstensi melalui jenis kustom pada dasarnya bawaan untuk cara kerja bahasa XAML. Kerangka kerja atau pengembang aplikasi bertanggung jawab untuk membuat objek dukungan yang dirujuk XAML. Baik kerangka kerja maupun pengembang aplikasi tidak terikat oleh spesifikasi tentang apa yang diwakili atau dilakukan objek dalam kosakata mereka di luar aturan sintaks XAML dasar. (Ada beberapa harapan tentang apa yang harus dilakukan oleh jenis namespace XAML bahasa XAML, tetapi Windows Runtime menyediakan semua dukungan yang diperlukan.)

Jika Anda menggunakan XAML untuk jenis yang berasal dari pustaka selain pustaka dan metadata inti Windows Runtime, Anda harus mendeklarasikan dan memetakan namespace XAML dengan awalan. Gunakan awalan tersebut dalam penggunaan elemen untuk mereferensikan jenis yang ditentukan di pustaka Anda. Anda mendeklarasikan pemetaan awalan sebagai atribut xmlns , biasanya dalam elemen akar bersama dengan definisi namespace XAML lainnya.

Untuk membuat definisi namespace Anda sendiri yang mereferensikan jenis kustom, Anda terlebih dahulu menentukan xmlns kata kunci:, lalu awalan yang Anda inginkan. Nilai atribut tersebut harus berisi kata kunci menggunakan: sebagai bagian pertama dari nilai. Sisa nilai adalah token string yang mereferensikan namespace layanan dukungan kode tertentu yang berisi jenis kustom Anda, berdasarkan nama.

Awalan menentukan token markup yang digunakan untuk merujuk ke namespace XAML tersebut di sisa markup dalam file XAML tersebut. Karakter titik dua (:) antara awalan dan entitas yang akan dirujuk dalam namespace XAML.

Misalnya, sintaks atribut untuk memetakan awalan myTypes ke namespace myCompany.myTypes adalah: xmlns:myTypes="using:myCompany.myTypes", dan penggunaan elemen representatif adalah: <myTypes:CustomButton/>

Untuk informasi selengkapnya tentang pemetaan namespace XAML untuk jenis kustom, termasuk pertimbangan khusus untuk ekstensi komponen Visual C++ (C++/CX), lihat namespace XAML dan pemetaan namespace layanan.

Namespace XAML lainnya

Anda sering melihat file XAML yang menentukan awalan "d" (untuk namespace perancang) dan "mc" (untuk kompatibilitas markup). Umumnya, ini untuk dukungan infrastruktur atau untuk mengaktifkan skenario dalam alat waktu desain. Untuk informasi selengkapnya, lihat bagian "Namespace XAML lainnya" dari topik namespace XAML.

Ekstensi markup

Ekstensi markup adalah konsep bahasa XAML yang sering digunakan dalam implementasi Windows Runtime XAML. Ekstensi markup sering mewakili semacam "pintasan" yang memungkinkan file XAML mengakses nilai atau perilaku yang tidak hanya mendeklarasikan elemen berdasarkan jenis dukungan. Beberapa ekstensi markup dapat mengatur properti dengan string biasa atau dengan elemen berlapis tambahan, dengan tujuan menyederhanakan sintaks atau memperhitungkan antara file XAML yang berbeda.

Dalam sintaks atribut XAML, kurung kurawal "{" dan "}" menunjukkan penggunaan ekstensi markup XAML. Penggunaan ini mengarahkan pemrosesan XAML untuk keluar dari perlakuan umum memperlakukan nilai atribut sebagai string literal atau nilai yang dapat dikonversi string secara langsung. Sebaliknya, parser XAML memanggil kode yang menyediakan perilaku untuk ekstensi markup tertentu, dan kode tersebut menyediakan objek alternatif atau hasil perilaku yang dibutuhkan parser XAML. Ekstensi markup dapat memiliki argumen, yang mengikuti nama ekstensi markup dan juga terkandung dalam kurung kurawal. Biasanya, ekstensi markup yang dievaluasi menyediakan nilai pengembalian objek. Selama penguraian, nilai yang dikembalikan dimasukkan ke dalam posisi di pohon objek tempat penggunaan ekstensi markup berada di XAML sumber.

Windows Runtime XAML mendukung ekstensi markup ini yang ditentukan di bawah namespace XAML default dan dipahami oleh parser XAML Windows Runtime:

  • {x:Bind}: mendukung pengikatan data, yang menunda evaluasi properti hingga run-time dengan menjalankan kode tujuan khusus, yang dihasilkannya pada waktu kompilasi. Ekstensi markup ini mendukung berbagai argumen.
  • {Binding}: mendukung pengikatan data, yang menunda evaluasi properti hingga run-time dengan menjalankan pemeriksaan objek runtime tujuan umum. Ekstensi markup ini mendukung berbagai argumen.
  • {StaticResource}: mendukung referensi nilai sumber daya yang ditentukan dalam ResourceDictionary. Sumber daya ini dapat berada dalam file XAML yang berbeda tetapi pada akhirnya harus dapat ditemukan oleh pengurai XAML pada waktu pemuatan. Argumen penggunaan {StaticResource} mengidentifikasi kunci (nama) untuk sumber daya kunci dalam ResourceDictionary.
  • {ThemeResource}: mirip dengan {StaticResource} tetapi dapat merespons perubahan tema run-time. {ThemeResource} muncul cukup sering di templat XAML default Windows Runtime, karena sebagian besar templat ini dirancang untuk kompatibilitas dengan pengguna beralih tema saat aplikasi sedang berjalan.
  • {TemplateBinding}: kasus khusus {Binding} yang mendukung templat kontrol di XAML dan penggunaan akhirnya pada durasi.
  • {RelativeSource}: memungkinkan bentuk pengikatan templat tertentu di mana nilai berasal dari induk templat.
  • {CustomResource}: untuk skenario pencarian sumber daya tingkat lanjut.

Windows Runtime juga mendukung ekstensi markup {x:Null}. Anda menggunakan ini untuk mengatur nilai Nullable ke null di XAML. Misalnya Anda dapat menggunakan ini dalam templat kontrol untuk CheckBox, yang menginterpretasikan null sebagai status pemeriksaan yang tidak ditentukan (memicu status visual "Tidak Ditentukan").

Ekstensi markup umumnya mengembalikan instans yang ada dari beberapa bagian lain dari grafik objek untuk aplikasi atau menangguhkan nilai untuk durasi. Karena Anda dapat menggunakan ekstensi markup sebagai nilai atribut, dan itulah penggunaan umum, Anda sering melihat ekstensi markup yang menyediakan nilai untuk properti jenis referensi yang mungkin memerlukan sintaks elemen properti.

Misalnya, berikut adalah sintaks untuk mereferensikan yang dapat Style digunakan kembali dari ResourceDictionary: <Button Style="{StaticResource SearchButtonStyle}"/>. Style adalah jenis referensi, bukan nilai sederhana, jadi tanpa {StaticResource} penggunaan, Anda akan memerlukan <Button.Style> elemen properti dan <Style> definisi di dalamnya untuk mengatur FrameworkElement.Style properti .

Dengan menggunakan ekstensi markup, setiap properti yang dapat diatur di XAML berpotensi dapat diatur dalam sintaks atribut. Anda dapat menggunakan sintaks atribut untuk menyediakan nilai referensi untuk properti meskipun tidak mendukung sintaks atribut untuk instans objek langsung. Atau Anda dapat mengaktifkan perilaku tertentu yang menangguhkan persyaratan umum bahwa properti XAML diisi oleh jenis nilai atau oleh jenis referensi yang baru dibuat.

Untuk mengilustrasikan, contoh XAML berikutnya menetapkan nilai FrameworkElement.Style properti dari a Border dengan menggunakan sintaks atribut. Properti FrameworkElement.Style mengambil instans Windows.UI.Xaml.Style kelas , jenis referensi yang secara default tidak dapat dibuat menggunakan string sintaks atribut. Tetapi dalam hal ini, atribut mereferensikan ekstensi markup tertentu, StaticResource. Saat ekstensi markup tersebut diproses, ekstensi tersebut mengembalikan referensi ke elemen Style yang didefinisikan sebelumnya sebagai sumber daya kunci dalam kamus sumber daya.

<Canvas.Resources>
  <Style TargetType="Border" x:Key="PageBackground">
    <Setter Property="BorderBrush" Value="Blue"/>
    <Setter Property="BorderThickness" Value="5"/>
  </Style>
</Canvas.Resources>
...
<Border Style="{StaticResource PageBackground}">
  ...
</Border>

Anda dapat menumpuk ekstensi markup. Ekstensi markup paling dalam dievaluasi terlebih dahulu.

Karena ekstensi markup, Anda memerlukan sintaks khusus untuk nilai "{" harfiah dalam atribut. Untuk informasi selengkapnya lihat panduan sintaks XAML.

Acara

XAML adalah bahasa deklaratif untuk objek dan propertinya, tetapi juga menyertakan sintaks untuk melampirkan penanganan aktivitas ke objek dalam markup. Sintaks peristiwa XAML kemudian dapat mengintegrasikan peristiwa yang dideklarasikan XAML melalui model pemrograman Windows Runtime. Anda menentukan nama peristiwa sebagai nama atribut pada objek tempat peristiwa ditangani. Untuk nilai atribut, Anda menentukan nama fungsi penanganan aktivitas yang Anda tentukan dalam kode. Prosesor XAML menggunakan nama ini untuk membuat representasi delegasi di pohon objek yang dimuat, dan menambahkan handler yang ditentukan ke daftar handler internal. Hampir semua aplikasi Windows Runtime ditentukan oleh markup dan kode di belakang sumber.

Berikut ini contoh sederhananya. Kelas Button mendukung peristiwa bernama Click. Anda dapat menulis handler untuk Klik yang menjalankan kode yang harus dipanggil setelah pengguna mengklik Tombol. Di XAML, Anda menentukan Klik sebagai atribut pada Tombol. Untuk nilai atribut, berikan string yang merupakan nama metode handler Anda.

<Button Click="showUpdatesButton_Click">Show updates</Button>

Ketika Anda mengkompilasi, pengkompilasi sekarang mengharapkan bahwa akan ada metode bernama showUpdatesButton_Click yang didefinisikan dalam file code-behind, di namespace yang dideklarasikan dalam nilai x:Class halaman XAML. Selain itu, metode tersebut harus memenuhi kontrak delegasi untuk acara tersebut Click . Contohnya:

namespace App1
{
    public sealed partial class MainPage: Page {
        ...
        private void showUpdatesButton_Click (object sender, RoutedEventArgs e) {
            //your code
        }
    }
}
' Namespace included at project level
Public NotInheritable Class MainPage
    Inherits Page
        ...
        Private Sub showUpdatesButton_Click (sender As Object, e As RoutedEventArgs e)
            ' your code
        End Sub
    ...
End Class
namespace winrt::App1::implementation
{
    struct MainPage : MainPageT<MainPage>
    {
        ...
        void showUpdatesButton_Click(Windows::Foundation::IInspectable const&, Windows::UI::Xaml::RoutedEventArgs const&);
    };
}
// .h
namespace App1
{
    public ref class MainPage sealed {
        ...
    private:
        void showUpdatesButton_Click(Object^ sender, RoutedEventArgs^ e);
    };
}

Dalam proyek, XAML ditulis sebagai file .xaml, dan Anda menggunakan bahasa yang Anda inginkan (C#, Visual Basic, C++/CX) untuk menulis file code-behind. Ketika file XAML dikompilasi markup sebagai bagian dari tindakan build untuk proyek, lokasi file XAML code-behind untuk setiap halaman XAML diidentifikasi dengan menentukan namespace layanan dan kelas sebagai atribut x:Class dari elemen akar halaman XAML. Untuk informasi selengkapnya tentang cara kerja mekanisme ini di XAML dan hubungannya dengan model pemrograman dan aplikasi, lihat Gambaran umum peristiwa dan peristiwa yang dirutekan.

Catatan

Untuk C++/CX ada dua file code-behind: satu adalah header (.xaml.h) dan yang lainnya adalah implementasi (.xaml.cpp). Implementasi mereferensikan header, dan secara teknis header yang mewakili titik masuk untuk koneksi code-behind.

Kamus sumber daya

ResourceDictionary Membuat adalah tugas umum yang biasanya dilakukan dengan menulis kamus sumber daya sebagai area halaman XAML atau file XAML terpisah. Kamus sumber daya dan cara menggunakannya adalah area konseptual yang lebih besar yang berada di luar cakupan topik ini. Untuk informasi selengkapnya, lihat Referensi sumber daya ResourceDictionary dan XAML.

XAML dan XML

Bahasa XAML pada dasarnya didasarkan pada bahasa XML. Tetapi XAML memperluas XML secara signifikan. Secara khusus memperlakukan konsep skema secara cukup berbeda karena hubungannya dengan konsep jenis dukungan, dan menambahkan elemen bahasa seperti anggota terlampir dan ekstensi markup. xml:lang valid di XAML, tetapi memengaruhi runtime daripada mengurai perilaku, dan biasanya dialirkan ke properti tingkat kerangka kerja. Untuk informasi selengkapnya, lihat FrameworkElement.Language. xml:base valid dalam markup tetapi pengurai mengabaikannya. xml:space valid, tetapi hanya relevan untuk skenario yang dijelaskan dalam topik XAML dan spasi kosong . Atribut pengodean valid di XAML. Hanya pengodean UTF-8 dan UTF-16 yang didukung. Pengodean UTF-32 tidak didukung.

Sensitivitas kasus di XAML

XAML peka huruf besar/kecil. Ini adalah konsekuensi lain dari XAML yang didasarkan pada XML, yang peka huruf besar/kecil. Nama elemen dan atribut XAML peka huruf besar/kecil. Nilai atribut berpotensi peka huruf besar/kecil; ini tergantung pada bagaimana nilai atribut ditangani untuk properti tertentu. Misalnya, jika nilai atribut menyatakan nama anggota enumerasi, perilaku bawaan yang mengonversi string nama anggota untuk mengembalikan nilai anggota enumerasi tidak peka huruf besar/kecil. Sebaliknya, nilai properti Nama , dan metode utilitas untuk bekerja dengan objek berdasarkan nama yang dinyatakan properti Nama , memperlakukan string nama sebagai peka huruf besar/kecil.

Cakupan nama XAML

Bahasa XAML mendefinisikan konsep namescope XAML. Konsep namescope XAML memengaruhi bagaimana prosesor XAML harus memperlakukan nilai x:Name atau Name yang diterapkan pada elemen XAML, terutama cakupan di mana nama harus diandalkan menjadi pengidentifikasi unik. Namescope XAML dibahas secara lebih rinci dalam topik terpisah; lihat Namescope XAML.

Peran XAML dalam proses pengembangan

XAML memainkan beberapa peran penting dalam proses pengembangan aplikasi.

  • XAML adalah format utama untuk mendeklarasikan UI dan elemen aplikasi di UI tersebut, jika Anda memprogram menggunakan C#, Visual Basic atau C++/CX. Biasanya setidaknya satu file XAML dalam proyek Anda mewakili metafora halaman di aplikasi Anda untuk UI yang awalnya ditampilkan. File XAML tambahan mungkin mendeklarasikan halaman tambahan untuk antarmuka pengguna navigasi. File XAML lainnya dapat mendeklarasikan sumber daya, seperti templat atau gaya.
  • Anda menggunakan format XAML untuk mendeklarasikan gaya dan templat yang diterapkan ke kontrol dan UI untuk aplikasi.
  • Anda mungkin menggunakan gaya dan templat baik untuk templat kontrol yang ada, atau jika Anda menentukan kontrol yang menyediakan templat default sebagai bagian dari paket kontrol. Ketika Anda menggunakannya untuk menentukan gaya dan templat, XAML yang relevan sering dinyatakan sebagai file XAML diskrit dengan root ResourceDictionary .
  • XAML adalah format umum untuk dukungan perancang dalam membuat UI aplikasi dan bertukar desain UI antara aplikasi desainer yang berbeda. Terutama, XAML untuk aplikasi dapat dipertukarkan antara alat desain XAML yang berbeda (atau jendela desain dalam alat).
  • Beberapa teknologi lain juga mendefinisikan UI dasar di XAML. Sehubungan dengan Windows Presentation Foundation (WPF) XAML dan Microsoft Silverlight XAML, XAML untuk Windows Runtime menggunakan URI yang sama untuk namespace XAML default bersamanya. Kosakata XAML untuk Windows Runtime tumpang tindih secara signifikan dengan kosakata XAML-for-UI yang juga digunakan oleh Silverlight dan untuk tingkat yang sedikit lebih rendah oleh WPF. Dengan demikian, XAML mempromosikan jalur migrasi yang efisien untuk UI yang awalnya didefinisikan untuk teknologi prekursor yang juga menggunakan XAML.
  • XAML mendefinisikan tampilan visual UI, dan file code-behind terkait menentukan logika. Anda dapat menyesuaikan desain UI tanpa membuat perubahan pada logika di code-behind. XAML menyederhanakan alur kerja antara desainer dan pengembang.
  • Karena kekayaan desainer visual dan dukungan permukaan desain untuk bahasa XAML, XAML mendukung prototipe UI yang cepat di fase pengembangan awal.

Tergantung pada peran Anda sendiri dalam proses pengembangan, Anda mungkin tidak banyak berinteraksi dengan XAML. Tingkat interaksi Anda dengan file XAML juga bergantung pada lingkungan pengembangan mana yang Anda gunakan, apakah Anda menggunakan fitur lingkungan desain interaktif seperti kotak alat dan editor properti, serta cakupan dan tujuan aplikasi Windows Runtime Anda. Namun demikian, kemungkinan selama pengembangan aplikasi, Anda akan mengedit file XAML di tingkat elemen menggunakan teks atau editor XML. Dengan menggunakan info ini, Anda dapat dengan percaya diri mengedit XAML dalam teks atau representasi XML dan mempertahankan validitas deklarasi dan tujuan file XAML tersebut saat digunakan oleh alat, operasi kompilasi markup, atau fase run-time aplikasi Windows Runtime Anda.

Optimalkan XAML Anda untuk performa beban

Berikut adalah beberapa tips untuk menentukan elemen UI di XAML menggunakan praktik terbaik untuk performa. Banyak dari tips ini berkaitan dengan penggunaan sumber daya XAML, tetapi tercantum di sini dalam gambaran umum XAML untuk kenyamanan. Untuk informasi selengkapnya tentang sumber daya XAML, lihat Referensi sumber daya ResourceDictionary dan XAML. Untuk beberapa tips lebih lanjut tentang performa, termasuk XAML yang sengaja menunjukkan beberapa praktik performa buruk yang harus Anda hindari di XAML Anda, lihat Mengoptimalkan markup XAML Anda.

  • Jika Anda sering menggunakan kuas warna yang sama di XAML Anda, tentukan SolidColorBrush sebagai sumber daya daripada menggunakan warna bernama sebagai nilai atribut setiap kali.
  • Jika Anda menggunakan sumber daya yang sama di lebih dari satu halaman UI, pertimbangkan untuk menentukannya di Resources daripada di setiap halaman. Sebaliknya, jika hanya satu halaman yang menggunakan sumber daya, jangan tentukan di Application.Resources dan tentukan hanya untuk halaman yang membutuhkannya. Ini baik untuk faktor XAML saat merancang aplikasi Anda dan untuk performa selama penguraian XAML.
  • Untuk sumber daya yang dipaketkan aplikasi Anda, periksa sumber daya yang tidak digunakan (sumber daya yang memiliki kunci, tetapi tidak ada referensi StaticResource di aplikasi Anda yang menggunakannya). Hapus ini dari XAML sebelum merilis aplikasi.
  • Jika Anda menggunakan file XAML terpisah yang menyediakan sumber daya desain (MergedDictionaries), pertimbangkan untuk mengomentari atau menghapus sumber daya yang tidak digunakan dari file-file ini. Bahkan jika Anda memiliki titik awal XAML bersama yang Anda gunakan di lebih dari satu aplikasi atau yang menyediakan sumber daya umum untuk semua aplikasi Anda, masih aplikasi Anda yang mengemas sumber daya XAML setiap kali, dan berpotensi harus memuatnya.
  • Jangan tentukan elemen UI yang tidak Anda perlukan komposisinya, dan gunakan templat kontrol default jika memungkinkan (templat ini telah diuji dan diverifikasi untuk performa beban).
  • Gunakan kontainer seperti Border daripada sengaja menguraikan elemen UI. Pada dasarnya, jangan menggambar piksel yang sama beberapa kali. Untuk informasi selengkapnya tentang overdraw dan cara mengujinya, lihat DebugSettings.IsOverdrawHeatMapEnabled.
  • Gunakan templat item default untuk ListView atau GridView; ini memiliki logika Penyaji khusus yang memecahkan masalah performa saat membangun pohon visual untuk sejumlah besar item daftar.

Men-debug XAML

Karena XAML adalah bahasa markup, beberapa strategi umum untuk penelusuran kesalahan dalam Microsoft Visual Studio tidak tersedia. Misalnya, tidak ada cara untuk mengatur titik henti dalam file XAML. Namun, ada teknik lain yang dapat membantu Anda men-debug masalah dengan definisi UI atau markup XAML lainnya saat Anda masih mengembangkan aplikasi.

Ketika ada masalah dengan file XAML, hasil yang paling umum adalah bahwa beberapa sistem atau aplikasi Anda akan melemparkan pengecualian penguraian XAML. Setiap kali ada pengecualian penguraian XAML, XAML yang dimuat oleh parser XAML gagal membuat pohon objek yang valid. Dalam beberapa kasus, seperti ketika XAML mewakili "halaman" pertama aplikasi Anda yang dimuat sebagai visual akar, pengecualian penguraian XAML tidak dapat dipulihkan.

XAML sering diedit dalam IDE seperti Visual Studio dan salah satu permukaan desain XAML-nya. Visual Studio sering kali dapat memberikan validasi waktu desain dan pemeriksaan kesalahan sumber XAML saat Anda mengeditnya. Misalnya mungkin menampilkan "squiggles" di editor teks XAML segera setelah Anda mengetik nilai atribut yang buruk, dan Anda bahkan tidak perlu menunggu pass kompilasi XAML untuk melihat bahwa ada yang salah dengan definisi UI Anda.

Setelah aplikasi benar-benar berjalan, jika ada kesalahan penguraian XAML yang tidak terdeteksi pada waktu desain, ini dilaporkan oleh runtime bahasa umum (CLR) sebagai XamlParseException. Untuk informasi selengkapnya tentang apa yang mungkin dapat Anda lakukan untuk XamlParseException run-time, lihat Penanganan pengecualian untuk aplikasi Windows Runtime di C# atau Visual Basic.

Catatan

Aplikasi yang menggunakan C++/CX untuk kode tidak mendapatkan XamlParseException tertentu. Tetapi pesan dalam pengecualian mengklarifikasi bahwa sumber kesalahan terkait XAML, dan menyertakan info konteks seperti nomor baris dalam file XAML, seperti halnya XamlParseException .

Untuk informasi selengkapnya tentang penelusuran kesalahan aplikasi Windows Runtime, lihat Memulai sesi debug.