Bagikan melalui


Kamus sumber daya gabungan (WPF .NET)

Sumber daya Windows Presentation Foundation (WPF) mendukung fitur kamus sumber daya gabungan. Fitur ini menyediakan cara untuk menentukan bagian sumber daya dari aplikasi WPF di luar aplikasi XAML yang dikompilasi. Sumber daya kemudian dapat dibagikan di seluruh aplikasi dan juga lebih nyaman diisolasi untuk pelokalan.

Penting

Dokumentasi Panduan Desktop untuk .NET 7 dan .NET 6 sedang dibangun.

Membuat kamus gabungan

Dalam markup, Anda menggunakan sintaks berikut untuk memperkenalkan kamus sumber daya gabungan ke dalam halaman:

<Page.Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
      <ResourceDictionary Source="myresourcedictionary.xaml"/>
      <ResourceDictionary Source="myresourcedictionary2.xaml"/>
    </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
</Page.Resources>

Elemen ResourceDictionary tidak memiliki x:Key Directive, yang umumnya diperlukan untuk semua item dalam koleksi sumber daya. Tetapi referensi lain ResourceDictionary dalam MergedDictionaries koleksi adalah kasus khusus, yang disediakan untuk skenario kamus sumber daya gabungan ini. Selanjutnya, ResourceDictionary yang memperkenalkan kamus sumber daya gabungan tidak dapat memiliki x:Key Directive.

Biasanya, masing-masing ResourceDictionary dalam MergedDictionaries koleksi menentukan Source atribut. Nilai Source harus berupa pengidentifikasi sumber daya seragam (URI) yang diselesaikan ke lokasi file sumber daya yang akan digabungkan. Tujuan URI tersebut harus berupa file XAML lain, dengan ResourceDictionary sebagai elemen akarnya.

Catatan

Ini legal untuk menentukan sumber daya dalam ResourceDictionary yang ditentukan sebagai kamus gabungan, baik sebagai alternatif untuk menentukan Source, atau selain sumber daya apa pun yang disertakan dari sumber yang ditentukan. Namun, ini bukan skenario umum. Skenario utama untuk kamus gabungan adalah menggabungkan sumber daya dari lokasi file eksternal. Jika Anda ingin menentukan sumber daya dalam markup untuk halaman, tentukan ini di utama ResourceDictionary dan bukan dalam kamus gabungan.

Perilaku kamus gabungan

Sumber daya dalam kamus gabungan menempati lokasi dalam cakupan pencarian sumber daya yang tepat setelah cakupan kamus sumber daya utama tempat mereka digabungkan. Meskipun kunci sumber daya harus unik dalam kamus individu mana pun, kunci dapat ada beberapa kali dalam serangkaian kamus gabungan. Dalam hal ini, sumber daya yang dikembalikan akan berasal dari kamus terakhir yang ditemukan secara berurutan dalam MergedDictionaries koleksi. MergedDictionaries Jika koleksi didefinisikan dalam XAML, maka urutan kamus gabungan dalam koleksi adalah urutan elemen seperti yang disediakan dalam markup. Jika kunci didefinisikan dalam kamus utama dan juga dalam kamus yang digabungkan, sumber daya yang dikembalikan akan berasal dari kamus utama. Aturan cakupan ini berlaku sama untuk referensi sumber daya statis dan referensi sumber daya dinamis.

Kamus dan kode gabungan

Kamus gabungan dapat ditambahkan ke Resources kamus melalui kode. Default, awalnya kosong ResourceDictionary yang ada untuk properti apa pun Resources juga memiliki properti koleksi default dan awalnya kosong MergedDictionaries . Untuk menambahkan kamus gabungan melalui kode, Anda mendapatkan referensi ke primer ResourceDictionaryyang diinginkan, mendapatkan nilai propertinya MergedDictionaries , dan memanggil Add generik Collection yang terkandung dalam MergedDictionaries. Objek yang Anda tambahkan harus baru ResourceDictionary.

Dalam kode, Anda tidak mengatur Source properti . Sebagai gantinya, Anda harus mendapatkan ResourceDictionary objek dengan membuat objek atau memuatnya. Salah satu cara untuk memuat yang ada ResourceDictionary untuk memanggil XamlReader.Load aliran file XAML yang ada yang memiliki ResourceDictionary akar, lalu mentransmisian nilai pengembalian ke ResourceDictionary.

URI kamus gabungan

Ada beberapa teknik tentang cara menyertakan kamus sumber daya gabungan, yang ditunjukkan oleh format pengidentifikasi sumber daya seragam (URI) yang Anda gunakan. Secara garis besar, teknik ini dapat dibagi menjadi dua kategori: sumber daya yang dikompilasi sebagai bagian dari proyek, dan sumber daya yang tidak dikompilasi sebagai bagian dari proyek.

Untuk sumber daya yang dikompilasi sebagai bagian dari proyek, Anda dapat menggunakan jalur relatif yang mengacu pada lokasi sumber daya. Jalur relatif dievaluasi selama kompilasi. Sumber daya Anda harus didefinisikan sebagai bagian dari proyek sebagai tindakan Build sumber daya . Jika Anda menyertakan file .xaml sumber daya dalam proyek sebagai Sumber Daya, Anda tidak perlu menyalin file sumber daya ke direktori output, sumber daya sudah disertakan dalam aplikasi yang dikompilasi. Anda juga dapat menggunakan tindakan Build konten , tetapi Anda kemudian harus menyalin file ke direktori output dan juga menyebarkan file sumber daya dalam hubungan jalur yang sama ke yang dapat dieksekusi.

Catatan

Jangan gunakan tindakan build Sumber Daya Tersemat. Tindakan build itu sendiri didukung untuk aplikasi WPF, tetapi resolusi Source tidak menggabungkan ResourceManager, dan dengan demikian tidak dapat memisahkan sumber daya individual dari aliran. Anda masih dapat menggunakan Sumber Daya Tersemat untuk tujuan lain selama Anda juga menggunakan ResourceManager untuk mengakses sumber daya.

Teknik terkait adalah menggunakan URI Paket ke file XAML, dan menyebutnya sebagai Sumber. Pack URI memungkinkan referensi ke komponen rakitan yang dirujuk dan teknik lainnya. Untuk informasi selengkapnya tentang URI Paket, lihat Sumber Daya Aplikasi, Konten, dan File Data WPF.

Untuk sumber daya yang tidak dikompilasi sebagai bagian dari proyek, URI dievaluasi pada waktu proses. Anda dapat menggunakan transportasi URI umum seperti file: atau http: untuk merujuk ke file sumber daya. Kerugian menggunakan pendekatan sumber daya yang tidak dikompilasi adalah file tersebut: akses memerlukan langkah-langkah penyebaran tambahan, dan http: akses menyiratkan zona keamanan Internet.

Gunakan kembali kamus gabungan

Anda dapat menggunakan kembali atau berbagi kamus sumber daya gabungan antara aplikasi, karena kamus sumber daya yang akan digabungkan dapat dirujuk melalui pengidentifikasi sumber daya seragam (URI) yang valid. Persis bagaimana Anda melakukan ini tergantung pada strategi penyebaran aplikasi Anda dan model aplikasi mana yang Anda ikuti. Strategi Pack URI yang disebutkan sebelumnya menyediakan cara untuk umumnya sumber daya gabungan di beberapa proyek selama pengembangan dengan berbagi referensi perakitan. Dalam skenario ini, sumber daya masih didistribusikan oleh klien, dan setidaknya salah satu aplikasi harus menyebarkan rakitan yang direferensikan. Dimungkinkan juga untuk mereferensikan sumber daya gabungan melalui URI terdistribusi yang menggunakan protokol http: .

Menulis kamus gabungan sebagai file aplikasi lokal atau ke penyimpanan bersama lokal adalah kemungkinan lain dari kamus gabungan dan skenario penyebaran aplikasi.

Pelokalan

Jika sumber daya yang perlu dilokalkan diisolasi ke kamus yang digabungkan ke dalam kamus utama, dan disimpan sebagai XAML yang longgar, file-file ini dapat dilokalkan secara terpisah. Teknik ini adalah alternatif ringan untuk melokalisasi rakitan sumber daya satelit. Untuk detailnya, lihat Gambaran Umum Globalisasi dan Pelokalan WPF.

Baca juga