Bagikan melalui


atribut x:Name

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

Penggunaan atribut XAML

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

Nilai XAML

Persyaratan Deskripsi
XAMLNameValue String yang sesuai dengan batasan 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 memasok digit sebagai karakter awal, atau alat membuat 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 berbahasa XAML yang ditentukan; 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 run time, 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 autogenerasi 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 di 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.

CatatanFrameworkElement.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 waktu proses dapat mengakibatkan penyelarasan nama bidang XAML / bidang privat yang tidak konsisten, yang sulit dilacak di kode Anda.

x:Name dan x:Key

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.