Bagikan melalui


Ekstensi Markup DynamicResource

Menyediakan nilai untuk atribut properti XAML apa pun dengan menugaskan nilai tersebut untuk menjadi referensi ke sumber daya yang ditentukan. Perilaku pencarian untuk sumber daya tersebut dianalogikan dengan pencarian run-time.

Penggunaan Atribut XAML

<object property="{DynamicResource key}" ... />  

Penggunaan Elemen Properti XAML

<object>  
  <object.property>  
    <DynamicResource ResourceKey="key" ... />  
  </object.property>  
</object>  

Nilai XAML

Nilai Deskripsi
key Kunci untuk sumber daya yang diminta. Kunci ini awalnya ditetapkan oleh x:Key Directive jika sumber daya dibuat dalam markup, atau disediakan sebagai key parameter saat memanggil ResourceDictionary.Add jika sumber daya dibuat dalam kode.

Keterangan

DynamicResource Akan membuat ekspresi sementara selama kompilasi awal dan dengan demikian menuangkan pencarian untuk sumber daya sampai nilai sumber daya yang diminta benar-benar diperlukan untuk membangun objek. Ini mungkin berpotensi setelah halaman XAML dimuat. Nilai sumber daya akan ditemukan berdasarkan pencarian kunci terhadap semua kamus sumber daya aktif mulai dari cakupan halaman saat ini, dan digantikan untuk ekspresi tempat penampung dari kompilasi.

Penting

Dalam hal prioritas properti dependensi, DynamicResource ekspresi setara dengan posisi di mana referensi sumber daya dinamis diterapkan. Jika Anda menetapkan nilai lokal untuk properti yang sebelumnya memiliki DynamicResource ekspresi sebagai nilai lokal, DynamicResource akan dihapus sepenuhnya. Untuk detailnya, lihat Prioritas Nilai Properti Dependensi.

Skenario akses sumber daya tertentu sangat sesuai untuk DynamicResource dibandingkan dengan Ekstensi Markup StaticResource. Lihat Sumber Daya XAML untuk diskusi tentang manfaat relatif dan implikasi DynamicResource performa dan StaticResource.

Yang ditentukan ResourceKey harus sesuai dengan sumber daya yang ada yang ditentukan oleh x:Key Directive pada beberapa tingkat di halaman Anda, aplikasi, tema kontrol yang tersedia dan sumber daya eksternal, atau sumber daya sistem, dan pencarian sumber daya akan terjadi dalam urutan tersebut. Untuk informasi selengkapnya tentang pencarian sumber daya untuk sumber daya statis dan dinamis, lihat Sumber Daya XAML.

Kunci sumber daya dapat berupa string apa pun yang ditentukan dalam Tata Bahasa XamlName. Kunci sumber daya mungkin juga merupakan jenis objek lain, seperti Type. Kunci Type sangat mendasar tentang bagaimana kontrol dapat ditata berdasarkan tema. Untuk informasi selengkapnya, lihat Gambaran Umum Penulisan Kontrol.

API untuk pencarian nilai sumber daya, seperti FindResource, ikuti logika pencarian sumber daya yang sama seperti yang digunakan oleh DynamicResource.

Cara deklaratif alternatif untuk mereferensikan sumber daya adalah sebagai Ekstensi Markup StaticResource.

Sintaks atribut adalah sintaks yang paling umum digunakan dengan ekstensi markup ini. Token string yang disediakan setelah DynamicResource string pengidentifikasi ditetapkan sebagai ResourceKey nilai kelas ekstensi yang mendasar DynamicResourceExtension .

DynamicResource dapat digunakan dalam sintaks elemen objek. Dalam hal ini, menentukan nilai ResourceKey properti diperlukan.

DynamicResource juga dapat digunakan dalam penggunaan atribut verbose yang menentukan ResourceKey properti sebagai pasangan properti=nilai:

<object property="{DynamicResource ResourceKey=key}" ... />  

Penggunaan verbose sering berguna untuk ekstensi yang memiliki lebih dari satu properti yang dapat diatur, atau jika beberapa properti bersifat opsional. Karena DynamicResource hanya memiliki satu properti yang dapat diatur, yang diperlukan, penggunaan verbose ini tidak khas.

Dalam implementasi prosesor WPF XAML, penanganan untuk ekstensi markup ini ditentukan oleh DynamicResourceExtension kelas .

DynamicResource 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