Bagikan melalui


Ekstensi Markup ComponentResourceKey

Menentukan dan mereferensikan kunci untuk sumber daya yang dimuat dari rakitan eksternal. Ini memungkinkan pencarian sumber daya untuk menentukan jenis target dalam rakitan, bukan kamus sumber daya eksplisit dalam rakitan atau di kelas.

Penggunaan Atribut XAML (kunci pengaturan, ringkas)

<object x:Key="{ComponentResourceKey {x:Type targetTypeName}, targetID}" ... />  

Penggunaan Atribut XAML (kunci pengaturan, verbose)

<object x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type targetTypeName}, ResourceID=targetID}" ... />  

Penggunaan Atribut XAML (meminta sumber daya, ringkas)

<object property="{DynamicResource {ComponentResourceKey {x:Type targetTypeName}, targetID}}" ... />  

Penggunaan Atribut XAML (meminta sumber daya, verbose)

<object property="{DynamicResource {ComponentResourceKey TypeInTargetAssembly={x:Type targetTypeName}, ResourceID=targetID}}" ... />  

Nilai XAML

Nilai Deskripsi
targetTypeName Nama jenis runtime bahasa umum publik (CLR) yang ditentukan dalam perakitan sumber daya.
targetID Kunci untuk sumber daya. Ketika sumber daya dicari, targetID akan dianalogikan dengan x:Key Directive sumber daya.

Keterangan

Seperti yang terlihat pada penggunaan di atas, penggunaan ekstensi markup {ComponentResourceKey} ditemukan di dua tempat:

  • Definisi kunci dalam kamus sumber daya tema, seperti yang disediakan oleh penulis kontrol.

  • Mengakses sumber daya tema dari rakitan, saat Anda mengintemplasi ulang kontrol tetapi ingin menggunakan nilai properti yang berasal dari sumber daya yang disediakan oleh tema kontrol.

Untuk mereferensikan sumber daya komponen yang berasal dari tema, umumnya disarankan agar Anda menggunakan {DynamicResource} daripada {StaticResource}. Ini ditunjukkan dalam penggunaan. {DynamicResource} disarankan karena tema itu sendiri dapat diubah oleh pengguna. Jika Anda ingin sumber daya komponen yang paling cocok dengan niat penulis kontrol untuk mendukung tema, Anda harus mengaktifkan referensi sumber daya komponen Anda menjadi dinamis juga.

TypeInTargetAssembly Mengidentifikasi jenis yang ada di rakitan target tempat sumber daya benar-benar ditentukan. ComponentResourceKey dapat didefinisikan dan digunakan secara independen untuk mengetahui dengan tepat di mana TypeInTargetAssembly ditentukan, tetapi akhirnya harus menyelesaikan jenis melalui rakitan yang dirujuk.

Penggunaan umum untuk ComponentResourceKey adalah menentukan kunci yang kemudian diekspos sebagai anggota kelas. Untuk penggunaan ini, Anda menggunakan ComponentResourceKey konstruktor kelas, bukan ekstensi markup. Untuk informasi selengkapnya, lihat ComponentResourceKey, atau bagian "Menentukan dan Mereferensikan Kunci untuk Sumber Daya Tema" dari gambaran umum penulisan kontrol topik.

Untuk menetapkan kunci dan mereferensikan sumber daya kunci, sintaks atribut umumnya digunakan untuk ComponentResourceKey ekstensi markup.

Sintaks ringkas yang ditampilkan bergantung pada ComponentResourceKey tanda tangan konstruktor dan penggunaan parameter posisi ekstensi markup. Urutan di mana targetTypeName dan targetID diberikan penting. Sintaks verbose bergantung pada ComponentResourceKey konstruktor tanpa parameter, lalu mengatur TypeInTargetAssembly dan ResourceId dengan cara yang dianalogikan ke sintaks atribut sejati pada elemen objek. Dalam sintaks verbose, urutan properti diatur tidak penting. Hubungan dan mekanisme kedua alternatif ini (ringkas dan verbose) dijelaskan secara lebih rinci dalam topik Ekstensi Markup dan WPF XAML.

Secara teknis, nilai untuk targetID bisa menjadi objek apa pun, itu tidak harus menjadi string. Namun, penggunaan yang paling umum dalam WPF adalah menyelaraskan targetID nilai dengan formulir yang merupakan string, dan di mana string tersebut valid dalam Tata Bahasa XamlName.

ComponentResourceKey dapat digunakan dalam sintaks elemen objek. Dalam hal ini, menentukan nilai TypeInTargetAssembly properti dan ResourceId diperlukan untuk menginisialisasi ekstensi dengan benar.

Dalam implementasi pembaca WPF XAML, penanganan untuk ekstensi markup ini ditentukan oleh ComponentResourceKey kelas .

ComponentResourceKey adalah ekstensi markup. Ekstensi markup biasanya diimplementasikan ketika ada persyaratan untuk meloloskan nilai atribut menjadi selain nilai harfiah atau nama handler, dan persyaratannya lebih global daripada hanya menempatkan pengonversi jenis pada jenis atau properti tertentu. Semua ekstensi markup di XAML menggunakan { dan } karakter dalam sintaks atributnya, yang merupakan konvensi di mana prosesor XAML mengenali bahwa ekstensi markup harus memproses atribut . Untuk informasi selengkapnya, lihat Ekstensi Markup dan WPF XAML.

Baca juga