x:Arahan Nama

Secara unik mengidentifikasi elemen yang ditentukan XAML dalam namescope XAML. Namescope XAML dan model keunikannya dapat diterapkan ke objek yang dibuat, ketika kerangka kerja menyediakan API atau menerapkan perilaku yang mengakses grafik objek yang dibuat XAML pada run time.

Penggunaan Atribut XAML

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

Nilai XAML

Nilai Deskripsi
XAMLNameValue String yang sesuai dengan pembatasan Tata Bahasa XamlName.

Keterangan

Setelah x:Name diterapkan ke model pemrograman cadangan kerangka kerja, nama tersebut setara dengan variabel yang menyimpan referensi objek atau instans seperti yang dikembalikan oleh konstruktor.

Nilai penggunaan direktif x:Name harus unik dalam namescope XAML. Secara default ketika digunakan oleh .NET XAML Services API, namescope XAML utama didefinisikan pada elemen akar XAML dari satu produksi XAML, dan mencakup elemen yang terkandung dalam produksi XAML tersebut. Namescope XAML diskrit tambahan yang mungkin terjadi dalam satu produksi XAML dapat ditentukan oleh kerangka kerja untuk mengatasi skenario tertentu. Misalnya, dalam WPF, namescope XAML baru ditentukan dan dibuat oleh templat apa pun yang juga ditentukan pada produksi XAML tersebut. Untuk informasi selengkapnya tentang namescope XAML (ditulis untuk WPF tetapi relevan untuk banyak konsep namescope XAML), lihat Namescope WPF XAML.

Secara umum, x:Name tidak boleh diterapkan dalam situasi yang juga menggunakan x:Key. Implementasi XAML oleh kerangka kerja tertentu yang ada telah memperkenalkan konsep substitusi antara x:Key dan x:Name, tetapi itu bukan praktik yang direkomendasikan. Layanan XAML .NET tidak mendukung konsep penggantian tersebut saat menangani informasi nama/kunci seperti INameScope atau DictionaryKeyPropertyAttribute.

Aturan untuk izin x:Name serta penegakan keunikan nama berpotensi didefinisikan oleh kerangka kerja penerapan tertentu. Namun, agar dapat digunakan dengan Layanan XAML .NET, definisi kerangka kerja keunikan namescope XAML harus konsisten dengan definisi INameScope informasi dalam dokumentasi ini, dan harus menggunakan aturan yang sama mengenai tempat informasi diterapkan. Misalnya, implementasi Windows Presentation Foundation (WPF) membagi berbagai elemen markup menjadi rentang terpisah NameScope , seperti kamus sumber daya, pohon logis yang dibuat oleh XAML tingkat halaman, templat, dan konten lain yang ditangguhkan, lalu memberlakukan keunikan nama XAML dalam masing-masing namescope XAML tersebut.

Untuk jenis kustom yang menggunakan penulis objek XAML Layanan .NET XAML, properti yang memetakan ke x:Name pada jenis dapat dibuat atau diubah. Anda menentukan perilaku ini dengan merujuk nama properti untuk dipetakan dengan RuntimeNamePropertyAttribute dalam kode definisi jenis. RuntimeNamePropertyAttribute adalah atribut tingkat jenis.

Using.NET Layanan XAML, logika pendukung untuk dukungan namescope XAML dapat didefinisikan dengan cara netral kerangka kerja dengan mengimplementasikan INameScope antarmuka.

Catatan Penggunaan WPF

Di bawah konfigurasi build standar untuk aplikasi WPF yang menggunakan XAML, kelas parsial, dan code-behind, yang ditentukan x:Name menjadi nama bidang yang dibuat dalam kode dasar ketika XAML diproses oleh tugas build kompilasi markup, dan bidang tersebut menyimpan referensi ke objek. Secara default, bidang yang dibuat bersifat internal. Anda dapat mengubah akses bidang dengan menentukan atribut x:FieldModifier. Di WPF dan Silverlight, urutannya adalah bahwa kompilasi markup menentukan dan memberi nama bidang dalam kelas parsial, tetapi nilai awalnya kosong. Kemudian, metode yang dihasilkan bernama InitializeComponent dipanggil dari dalam konstruktor kelas. InitializeComponent terdiri dari FindName panggilan menggunakan masing-masing x:Name nilai yang ada di bagian yang ditentukan XAML dari kelas parsial sebagai string input. Nilai yang dikembalikan kemudian ditetapkan ke referensi bidang seperti bernama untuk mengisi nilai bidang dengan objek yang dibuat dari penguraian XAML. Eksekusi InitializeComponent memungkinkan untuk mereferensikan grafik objek run time menggunakan x:Name nama bidang / secara langsung, daripada harus memanggil FindName secara eksplisit kapan saja Anda memerlukan referensi ke objek yang ditentukan XAML.

Untuk aplikasi WPF yang menggunakan target Microsoft Visual Basic dan menyertakan file XAML dengan Page tindakan build, properti referensi terpisah dibuat selama kompilasi yang menambahkan WithEvents kata kunci ke semua elemen yang memiliki x:Name, untuk mendukung Handles sintaks untuk delegasi penanganan aktivitas. Properti ini selalu bersifat publik. Untuk informasi selengkapnya, lihat Penanganan Peristiwa Visual Basic dan WPF.

x:Name digunakan oleh prosesor WPF XAML untuk mendaftarkan nama ke dalam namescope XAML pada waktu pemuatan, bahkan untuk kasus di mana halaman tidak dikompilasi markup oleh tindakan build (misalnya, XAML longgar dari kamus sumber daya). Salah satu alasan untuk perilaku ini adalah karena x:Name berpotensi diperlukan untuk ElementName pengikatan. Untuk detailnya, lihat Gambaran Umum Pengikatan Data.

Seperti disebutkan sebelumnya, x:Name (atau Name) tidak boleh diterapkan dalam situasi yang juga menggunakan x:Key. WPF ResourceDictionary memiliki perilaku khusus untuk mendefinisikan dirinya sebagai namescope XAML tetapi mengembalikan nilai Tidak Diimplementasikan atau null untuk INameScope API sebagai cara untuk menegakkan perilaku ini. Jika pengurai WPF XAML menemukan Name atau x:Name dalam yang ditentukan ResourceDictionaryXAML , nama tidak ditambahkan ke namescope XAML apa pun. Mencoba menemukan nama tersebut dari namescope XAML apa pun dan FindName metode tidak akan mengembalikan hasil yang valid.

x:Nama dan Nama

Banyak skenario aplikasi WPF dapat menghindari penggunaan x:Name atribut apa pun, karena Name properti dependensi seperti yang ditentukan dalam namespace XAML default untuk beberapa kelas dasar penting seperti FrameworkElement dan FrameworkContentElement memenuhi tujuan yang sama ini. Masih ada beberapa skenario XAML dan WPF umum di mana akses kode ke elemen tanpa Name properti di tingkat kerangka kerja penting. Misalnya, kelas dukungan animasi dan papan cerita tertentu tidak mendukung Name properti, tetapi sering kali perlu dirujuk dalam kode untuk mengontrol animasi. Anda harus menentukan x:Name sebagai atribut pada garis waktu dan transformasi yang dibuat di XAML, jika Anda ingin mereferensikannya dari kode nanti.

Jika Name tersedia sebagai properti di kelas , Name dan x:Name dapat digunakan secara bergantian sebagai atribut, tetapi pengecualian penguraian akan dihasilkan jika keduanya ditentukan pada elemen yang sama. Jika XAML dikompilasi markup, pengecualian akan terjadi pada kompilasi markup, jika tidak, itu terjadi pada beban.

Name dapat diatur menggunakan sintaks atribut XAML, dan dalam kode menggunakan SetValue; perhatikan bahwa mengatur Name properti dalam kode tidak membuat referensi bidang perwakilan dalam namescope XAML dalam sebagian besar keadaan di mana XAML sudah dimuat. Alih-alih mencoba mengatur Name dalam kode, gunakan NameScope metode dari kode, terhadap namescope yang sesuai.

Name juga dapat diatur menggunakan sintaks elemen properti dengan teks dalam, tetapi itu jarang terjadi. Sebaliknya, x:Name tidak dapat diatur dalam sintaks elemen properti XAML, atau dalam kode menggunakan SetValue; hanya dapat diatur menggunakan sintaks atribut pada objek karena ini adalah direktif.

Catatan Penggunaan Silverlight

x:Name untuk Silverlight didokumenkan secara terpisah. Untuk informasi selengkapnya, lihat XAML Namespace (x:) Fitur Bahasa (Silverlight).

Baca juga