Bagikan melalui


x:Arahan Kunci

Secara unik mengidentifikasi elemen yang dibuat dan direferensikan dalam kamus yang ditentukan XAML. x:Key Menambahkan nilai ke elemen objek XAML adalah cara paling umum untuk mengidentifikasi sumber daya dalam kamus sumber daya, misalnya dalam WPF ResourceDictionary.

Penggunaan Atribut XAML

<object x:Key="stringKeyValue".../>  
-or-  
<object x:Key="{markupExtensionUsage}".../>  

Penggunaan Atribut XAML (khusus WPF)

<object.Resources>  
  <object x:Key="stringKeyValue".../>  
</object.Resources>  
-or-  
<object.Resources>  
  <object x:Key="{markupExtensionUsage}".../>  
</object.Resources>  

Nilai XAML

Nilai Deskripsi
stringKeyValue String teks untuk digunakan sebagai kunci. String teks harus sesuai dengan Tata Bahasa XamlName.
markupExtensionUsage Dalam pemisah {}ekstensi markup , penggunaan ekstensi markup yang menyediakan objek untuk digunakan sebagai kunci. Lihat Keterangan.

Keterangan

x:Key mendukung konsep kamus sumber daya XAML. XAML sebagai bahasa tidak menentukan implementasi kamus sumber daya, yang diserahkan ke kerangka kerja UI tertentu. Untuk mempelajari selengkapnya tentang bagaimana kamus sumber daya XAML diterapkan di WPF, lihat Gambaran Umum sumber daya XAML (WPF .NET).

Dalam XAML 2006 dan WPF, x:Key harus disediakan sebagai atribut. Anda masih dapat menggunakan kunci nonstring, tetapi ini memerlukan penggunaan ekstensi markup untuk memberikan nilai nonstring dalam formulir atribut. Jika Anda menggunakan XAML 2009, x:Key dapat ditentukan sebagai elemen, untuk secara eksplisit mendukung kamus yang di-key oleh jenis objek selain string tanpa memerlukan perantara ekstensi markup. Lihat bagian "XAML 2009" dalam topik ini. Sisa bagian Keterangan berlaku khusus untuk implementasi XAML 2006.

Nilai x:Key atribut dapat berupa string apa pun yang ditentukan dalam Tata Bahasa XamlName atau dapat menjadi objek yang dievaluasi melalui ekstensi markup. Lihat "Catatan Penggunaan WPF" misalnya dari WPF.

Elemen turunan dari elemen induk yang merupakan IDictionary implementasi biasanya harus menyertakan x:Key atribut yang menentukan nilai kunci unik dalam kamus tersebut. Kerangka kerja mungkin menerapkan properti kunci alias untuk menggantikan x:Key pada jenis tertentu; jenis yang menentukan properti tersebut harus dikaitkan dengan DictionaryKeyPropertyAttribute.

Kode yang setara dengan menentukan x:Key adalah kunci yang digunakan untuk yang mendasar IDictionary. Misalnya, x:Key yang diterapkan dalam markup untuk sumber daya di WPF setara dengan nilai key parameter ResourceDictionary.Add saat Anda menambahkan sumber daya ke WPF ResourceDictionary dalam kode.

Catatan Penggunaan WPF

Objek anak dari objek induk yang merupakan IDictionary implementasi, seperti WPF ResourceDictionary, biasanya harus menyertakan x:Key atribut, dan nilai kunci harus unik dalam kamus tersebut. Ada dua pengecualian penting:

  • Beberapa jenis WPF mendeklarasikan kunci implisit untuk penggunaan kamus. Misalnya, Style dengan TargetType, atau DataTemplate dengan DataType, dapat berada di dan ResourceDictionary menggunakan kunci implisit.

  • WPF mendukung konsep kamus sumber daya gabungan. Kunci dapat dibagikan antara kamus gabungan, dan perilaku kunci bersama dapat diakses menggunakan FindResource. Untuk informasi selengkapnya, lihat Kamus sumber daya gabungan.

Dalam keseluruhan implementasi WPF XAML dan model aplikasi, keunikan utama tidak diperiksa oleh kompilator markup XAML. Sebagai gantinya x:Key , nilai yang hilang atau tidak unik menyebabkan kesalahan pengurai XAML waktu muat. Namun, penanganan Kamus Visual Studio untuk WPF sering kali dapat mencatat kesalahan tersebut dalam fase desain.

Perhatikan bahwa dalam sintaks yang ditampilkan, ResourceDictionary objek implisit dalam bagaimana prosesor WPF XAML menghasilkan koleksi untuk mengisi Resources koleksi. ResourceDictionary biasanya tidak disediakan secara eksplisit sebagai elemen dalam markup, meskipun dapat berada dalam beberapa kasus jika diinginkan untuk kejelasan (itu akan menjadi elemen objek koleksi antara Resources elemen properti dan item dalam yang mengisi kamus). Untuk informasi tentang mengapa objek koleksi hampir selalu menjadi elemen implisit dalam markup, lihat Sintaks XAML Secara Terperinci.

Dalam implementasi WPF XAML, penanganan untuk kunci kamus sumber daya didefinisikan oleh ResourceKey kelas abstrak. Namun prosesor WPF XAML menghasilkan berbagai jenis ekstensi yang mendasar untuk kunci berdasarkan penggunaannya. Misalnya, kunci untuk DataTemplate kelas turunan atau apa pun ditangani secara terpisah, dan menghasilkan objek yang berbeda DataTemplateKey .

Kunci dan nama menggunakan direktif dan elemen bahasa yang berbeda (x:Key versus x:Name) dalam definisi XAML dasar. Kunci dan nama juga digunakan dalam situasi yang berbeda oleh definisi WPF dan penerapan konsep-konsep ini. Untuk detailnya, lihat Namescope WPF XAML.

Seperti yang dinyatakan sebelumnya, nilai kunci dapat disediakan melalui ekstensi markup dan dapat selain nilai string. Contoh skenario WPF adalah bahwa nilainya x:Key mungkin merupakan ComponentResourceKey. Kontrol tertentu mengekspos kunci gaya jenis tersebut untuk sumber daya gaya kustom yang memengaruhi bagian dari tampilan dan perilaku kontrol tersebut tanpa benar-benar mengganti gaya. Contoh kunci seperti itu adalah ButtonStyleKey.

Fitur kamus gabungan WPF memperkenalkan pertimbangan tambahan untuk keunikan utama dan perilaku pencarian kunci. Untuk informasi selengkapnya, lihat Kamus sumber daya gabungan.

XAML 2009

XAML 2009 melonggarkan pembatasan yang x:Key selalu disediakan dalam bentuk atribut.

Di WPF, Anda dapat menggunakan fitur XAML 2009, tetapi hanya untuk XAML yang tidak dikompilasi markup. XAML yang dikompilasi markup untuk WPF dan bentuk BAML XAML saat ini tidak mendukung kata kunci dan fitur XAML 2009.

Di bawah XAML 2009, Anda dapat menentukan x:Key elemen melalui penggunaan berikut:

Penggunaan Elemen XAML (hanya XAML 2009)

<object>  
  <x:Key>  
keyObject  
  </x:Key>  
...  
</object>  

Nilai XAML

Nilai Deskripsi
keyObject Elemen objek untuk objek yang digunakan sebagai kunci untuk yang diberikan object dalam kamus khusus.
  • Kontainer/induk untuk penggunaan semacam ini tidak ditampilkan di sini. object diharapkan menjadi anak dari elemen objek yang mewakili implementasi kamus khusus. keyObject diharapkan menjadi instans objek (atau nilai jenis nilai) yang sesuai sebagai kunci untuk implementasi kamus khusus tertentu.

  • WPF tidak menerapkan kamus yang memerlukan penggunaan ini. Kunci objek lebih merupakan fitur umum dari bahasa XAML, mungkin berguna untuk skenario kamus kustom tertentu di mana membuat kamus di XAML diinginkan. Untuk fitur WPF seperti gaya implisit yang menggunakan kunci non-string untuk sumber daya, teknik lain untuk membuat atau menentukan kunci ada, jadi menggunakan kunci objek tidak diperlukan.

  • keyObject bisa juga menjadi penggunaan ekstensi markup dalam bentuk elemen objek, bukan instans objek langsung.

Catatan Penggunaan Silverlight

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

Baca juga