atribut x:Name

Secara unik mengidentifikasi elemen objek untuk akses ke objek yang dibuat dari kode di belakang atau kode umum. Setelah diterapkan ke model pemrograman cadangan, x:Name dapat dianggap setara dengan variabel yang memegang referensi objek, seperti yang dikembalikan oleh konstruktor.

Penggunaan atribut XAML

<object x:Name="XAMLNameValue".../>

Nilai XAML

Istilah Deskripsi
XAMLNameValue String yang sesuai dengan pembatasan tata bahasa XamlName.

Tata bahasa XamlName

Berikut ini adalah tata bahasa normatif untuk string yang digunakan sebagai kunci dalam implementasi XAML ini:

XamlName ::= NameStartChar (NameChar)*
NameStartChar ::= LetterCharacter | '_'
NameChar ::= NameStartChar | DecimalDigit
LetterCharacter ::= ('a'-'z') | ('A'-'Z')
DecimalDigit ::= '0'-'9'
CombiningCharacter::= none
  • Karakter dibatasi untuk rentang ASCII yang lebih rendah, dan lebih khusus untuk huruf besar alfabet Romawi dan huruf kecil, digit, dan karakter garis bawah (_).
  • Rentang karakter Unicode tidak didukung.
  • Nama tidak dapat dimulai dengan digit. Beberapa implementasi alat menambahkan garis bawah (_) ke string jika pengguna menyediakan digit sebagai karakter awal, atau alat menghasilkan nilai x:Name secara otomatis berdasarkan nilai lain yang berisi digit.

Keterangan

x:Name yang ditentukan menjadi nama bidang yang dibuat dalam kode yang mendasar saat XAML diproses, dan bidang tersebut menyimpan referensi ke objek. Proses pembuatan bidang ini dilakukan oleh langkah-langkah target MSBuild, yang juga bertanggung jawab untuk bergabung dengan kelas parsial untuk file XAML dan kodenya di belakang. Perilaku ini belum tentu ditentukan bahasa XAML; ini adalah implementasi khusus yang Platform Windows Universal (UWP) pemrograman untuk XAML berlaku untuk menggunakan x:Name dalam model pemrograman dan aplikasinya.

Setiap x:Name yang ditentukan harus unik dalam namescope XAML. Umumnya, namescope XAML didefinisikan pada tingkat elemen akar halaman yang dimuat dan berisi semua elemen di bawah elemen tersebut dalam satu halaman XAML. Namescope XAML tambahan ditentukan oleh templat kontrol atau templat data apa pun yang ditentukan di halaman tersebut. Pada durasi, namescope XAML lain dibuat untuk akar pohon objek yang dibuat dari templat kontrol yang diterapkan, dan juga oleh pohon objek yang dibuat dari panggilan ke XamlReader.Load. Untuk informasi selengkapnya, lihat Namescope XAML.

Alat desain sering membuat nilai x:Name secara otomatis untuk elemen ketika diperkenalkan ke permukaan desain. Skema pembuatan otomatis bervariasi tergantung pada perancang mana yang Anda gunakan, tetapi skema umumnya adalah menghasilkan string yang dimulai dengan nama kelas yang mendukung elemen, diikuti dengan bilangan bulat yang maju. Misalnya, jika Anda memperkenalkan elemen Tombol pertama kepada perancang, Anda mungkin melihat bahwa dalam XAML elemen ini memiliki nilai atribut x:Name "Button1".

x:Name tidak dapat diatur dalam sintaks elemen properti XAML, atau dalam kode menggunakan SetValue. x:Name hanya dapat diatur menggunakan sintaks atribut XAML pada elemen.

Catatan Khusus untuk aplikasi C++/CX, bidang dukungan untuk referensi x:Name tidak dibuat untuk elemen akar file atau halaman XAML. Jika Anda perlu mereferensikan objek akar dari kode C++ di belakang, gunakan API atau traversal pohon lainnya. Misalnya, Anda dapat memanggil FindName untuk elemen anak bernama yang diketahui lalu memanggil Induk.

x:Nama dan properti Nama lainnya

Beberapa jenis yang digunakan dalam UWP XAML juga memiliki properti bernama Name. Misalnya, FrameworkElement.Name dan TextElement.Name.

Jika Nama tersedia sebagai properti yang dapat diatur pada elemen, Nama dan x:Name dapat digunakan secara bergantian di XAML, tetapi kesalahan menghasilkan jika kedua atribut ditentukan pada elemen yang sama. Ada juga kasus di mana ada properti Nama tetapi baca-saja (seperti VisualState.Name). Jika demikian, Anda selalu menggunakan x:Name untuk memberi nama elemen tersebut di XAML dan Nama baca-saja ada untuk beberapa skenario kode yang kurang umum.

PerhatikanFrameworkElement.Name umumnya tidak boleh digunakan sebagai cara untuk mengubah nilai yang awalnya ditetapkan oleh x:Name, meskipun ada beberapa skenario yang merupakan pengecualian untuk aturan umum tersebut. Dalam skenario umum, pembuatan dan definisi namescope XAML adalah operasi prosesor XAML. Memodifikasi FrameworkElement.Name pada durasi dapat mengakibatkan penyelarasan nama bidang XAML / penyelarasan penamaan bidang privat yang tidak konsisten, yang sulit dilacak di kode Anda.

x:Nama dan x:Kunci

x:Name dapat diterapkan sebagai atribut ke elemen dalam ResourceDictionary untuk bertindak sebagai pengganti atribut x:Key. (Ini adalah aturan bahwa semua elemen dalam ResourceDictionary harus memiliki atribut x:Key atau x:Name.) Ini umum untuk animasi Storyboarded. Untuk informasi selengkapnya, lihat bagian referensi sumber daya ResourceDictionary dan XAML.