x:Atribut Bersama
Ketika diatur ke false
, memodifikasi perilaku pengambilan sumber daya WPF sehingga permintaan untuk sumber daya yang dikaitkan membuat instans baru untuk setiap permintaan alih-alih berbagi instans yang sama untuk semua permintaan.
Penggunaan Atribut XAML
<ResourceDictionary>
<object x:Shared="false".../>
</ResourceDictionary>
Keterangan
x:Shared
dipetakan ke namespace XAML bahasa XAML dan diakui sebagai elemen bahasa XAML yang valid oleh Layanan XAML .NET dan pembaca XAML-nya. Namun, kemampuan x:Shared
yang dinyatakan hanya relevan untuk aplikasi WPF dan untuk pengurai WPF XAML. Di WPF, x:Shared
hanya berguna sebagai atribut ketika diterapkan ke objek yang ada dalam WPF ResourceDictionary. Penggunaan lain tidak melemparkan pengecualian penguraian atau kesalahan lainnya, tetapi tidak berpengaruh.
Arti x:Shared
tidak ditentukan dalam spesifikasi bahasa XAML. Implementasi XAML lainnya, seperti yang dibangun di Layanan XAML .NET, tidak selalu memberikan dukungan berbagi sumber daya. Implementasi XAML tersebut dapat memberikan perilaku serupa dalam kerangka kerja pendukung yang juga menggunakan x:Shared
nilai.
Di WPF, kondisi default x:Shared
untuk sumber daya adalah true
. Kondisi ini berarti bahwa setiap permintaan sumber daya tertentu selalu mengembalikan instans yang sama.
Memodifikasi objek yang dikembalikan melalui API sumber daya, seperti FindResource, atau memodifikasi objek langsung dalam ResourceDictionary, mengubah sumber daya asli. Jika referensi ke sumber daya tersebut adalah referensi sumber daya dinamis, konsumen sumber daya tersebut mendapatkan sumber daya yang diubah.
Jika referensi ke sumber daya adalah referensi sumber daya statis, perubahan pada sumber daya setelah waktu pemrosesan XAML tidak relevan. Untuk informasi selengkapnya tentang referensi sumber daya statis versus dinamis, lihat Gambaran Umum sumber daya XAML (WPF .NET).
Menentukan secara x:Shared="true"
eksplisit jarang dilakukan, karena itu sudah menjadi default. Tidak ada kode langsung yang setara untuk x:Shared
dalam model objek WPF; itu hanya dapat ditentukan dalam penggunaan XAML dan harus diproses baik oleh perilaku WPF default atau dalam aliran simpul XAML menengah pada jalur beban jika diproses menggunakan Layanan XAML .NET dan pembaca XAML-nya.
Skenario untuk x:Shared="false"
adalah jika Anda menentukan FrameworkElement kelas atau FrameworkContentElement turunan sebagai sumber daya dan kemudian Anda memperkenalkan sumber daya elemen ke dalam con mode tenda l. x:Shared="false"
memungkinkan sumber daya elemen diperkenalkan beberapa kali dalam koleksi yang sama (seperti UIElementCollection). Tanpa x:Shared="false"
ini tidak valid karena koleksi memberlakukan keunikan kontennya. Namun, perilaku membuat x:Shared="false"
instans sumber daya lain yang identik alih-alih mengembalikan instans yang sama.
Skenario lain untuk x:Shared="false"
adalah jika Anda menggunakan Freezable sumber daya untuk nilai animasi tetapi ingin memodifikasi sumber daya per animasi.
Penanganan false
string tidak peka huruf besar/kecil.
Di WPF, x:Shared
hanya berlaku dalam kondisi berikut:
Yang ResourceDictionary berisi item dengan
x:Shared
harus dikompilasi. Tidak ResourceDictionary dapat berada dalam XAML longgar atau digunakan untuk tema.Item ResourceDictionary yang berisi tidak boleh disarangkan dalam item lain ResourceDictionary. Misalnya, Anda tidak dapat menggunakan
x:Shared
untuk item di ResourceDictionaryStyle dalam item yang sudah menjadi ResourceDictionary item.
Baca juga
.NET Desktop feedback