Bagikan melalui


x:Ekstensi Markup Statis

Mereferensikan entitas kode statis menurut nilai yang ditentukan dalam cara yang sesuai dengan Common Language Specification (CLS). Properti statis yang dirujuk dapat digunakan untuk memberikan nilai properti di XAML.

Penggunaan Atribut XAML

<object property="{x:Static prefix:typeName.staticMemberName}" .../>

Nilai XAML

Nilai Deskripsi
prefix Opsional. Awalan yang mengacu pada namespace XAML yang dipetakan dan non-default. prefix ditampilkan secara eksplisit dalam penggunaan karena Anda jarang mereferensikan properti statis yang berasal dari namespace XAML default. Lihat Keterangan.
typeName Harus diisi. Nama jenis yang menentukan anggota statis yang diinginkan.
staticMemberName Harus diisi. Nama anggota nilai statis yang diinginkan (konstanta, properti statis, bidang, atau nilai enumerasi).

Keterangan

Entitas kode yang dirujuk harus salah satu dari yang berikut ini:

  • Konstanta
  • Properti statis
  • Bidang
  • Nilai enumerasi

Menentukan entitas kode lain, seperti properti nonstatis, menyebabkan kesalahan waktu kompilasi jika XAML dikompilasi markup, atau pengecualian penguraian waktu pemuatan XAML.

Anda dapat membuat x:Static referensi ke bidang statis atau properti yang tidak berada di namespace XAML default untuk dokumen XAML saat ini; namun, ini memerlukan pemetaan awalan. Namespace XAML hampir selalu didefinisikan pada elemen akar dokumen XAML.

Operasi pencarian untuk properti statis dapat dilakukan oleh Layanan XAML .NET dan pembaca XAML dan penulis XAML, ketika mereka berjalan dengan konteks skema XAML default. Konteks skema XAML ini dapat menggunakan refleksi CLR untuk memberikan nilai statis yang diperlukan untuk konstruksi grafik objek. Yang typeName Anda tentukan sebenarnya adalah nama jenis XAML, bukan nama jenis CLR, meskipun ini pada dasarnya adalah nama yang sama saat menggunakan konteks skema XAML default atau saat menggunakan semua kerangka kerja penerapan XAML berbasis CLR yang ada.

Berhati-hatilah saat Anda membuat x:Static referensi yang tidak secara langsung merupakan jenis nilai properti. Dalam urutan pemrosesan XAML, nilai yang disediakan dari ekstensi markup tidak memanggil konversi nilai tambahan. Ini benar bahkan jika referensi Anda x:Static membuat string teks, dan konversi nilai untuk nilai atribut berdasarkan string teks biasanya terjadi baik untuk anggota tertentu atau untuk nilai anggota mana pun dari jenis pengembalian.

Sintaks atribut adalah sintaks yang paling umum digunakan dengan ekstensi markup ini. Token string yang disediakan setelah x:Static string pengidentifikasi ditetapkan sebagai Member nilai kelas ekstensi yang mendasar StaticExtension .

Ada dua penggunaan XAML lainnya yang secara teknis dimungkinkan. Namun, penggunaan ini kurang umum karena tidak perlu verbose:

  1. Sintaks elemen objek.

    <x:Static Member="prefix:typeName.staticMemberName" ... />
    
  2. Sintaks atribut dengan properti Anggota eksplisit untuk string inisialisasi.

    <object property="{x:Static Member=prefix:typeName.staticMemberName}" ... />
    

Dalam implementasi Layanan XAML .NET, penanganan untuk ekstensi markup ini ditentukan oleh StaticExtension kelas .

x:Static adalah ekstensi markup. Semua ekstensi markup di XAML menggunakan { karakter dan } dalam sintaks atributnya, yang merupakan konvensi di mana prosesor XAML mengenali bahwa ekstensi markup harus memberikan nilai. Untuk informasi selengkapnya tentang ekstensi markup, lihat Ekstensi Markup untuk Gambaran Umum XAML.

Catatan Penggunaan WPF

Namespace XAML default yang Anda gunakan untuk pemrograman WPF tidak berisi banyak properti statis yang berguna, dan sebagian besar properti statis yang berguna memiliki dukungan seperti pengonversi jenis yang memfasilitasi penggunaan tanpa memerlukan {x:Static} . Untuk properti statis, Anda harus memetakan awalan untuk namespace XAML jika salah satu dari berikut ini benar:

  • Anda mereferensikan jenis yang ada di WPF tetapi bukan bagian dari namespace XAML default untuk WPF (http://schemas.microsoft.com/winfx/2006/xaml/presentation). Ini adalah skenario yang cukup umum untuk menggunakan x:Static. Misalnya, Anda dapat menggunakan x:Static referensi dengan pemetaan namespace XAML ke System namespace CLR dan rakitan mscorlib untuk mereferensikan properti Environment statis kelas.

  • Anda merujuk jenis dari rakitan kustom.

  • Anda merujuk jenis yang ada di rakitan WPF, tetapi jenis tersebut berada dalam namespace CLR yang tidak dipetakan menjadi bagian dari namespace layanan XAML default WPF. Pemetaan namespace LAYANAN CLR ke dalam namespace XAML default untuk WPF dilakukan oleh definisi dalam berbagai rakitan WPF (untuk informasi selengkapnya tentang konsep ini, lihat Namespace XAML dan Pemetaan Namespace layanan untuk WPF XAML). Namespace CLR yang tidak dipetakan dapat ada jika namespace CLR sebagian besar terdiri dari definisi kelas yang biasanya tidak ditujukan untuk XAML, seperti System.Windows.Threading.

Untuk informasi selengkapnya tentang cara menggunakan awalan dan namespace XAML untuk WPF, lihat Namespace XAML dan Pemetaan Namespace layanan untuk WPF XAML.

Baca juga