Bagikan melalui


XAML dan spasi kosong

Pelajari tentang aturan pemrosesan spasi kosong seperti yang digunakan oleh XAML.

Pemrosesan spasi kosong

Konsisten dengan XML, karakter spasi kosong di XAML adalah spasi, umpan baris, dan tab. Ini sesuai dengan nilai Unicode masing-masing 0020, 000A, dan 0009. Secara default normalisasi spasi putih ini terjadi ketika prosesor XAML menemukan teks dalam yang ditemukan di antara elemen dalam file XAML:

  • Karakter linefeed antara karakter Asia Timur dihapus.
  • Semua karakter spasi kosong (spasi, umpan baris, tab) dikonversi menjadi spasi.
  • Semua spasi berturut-turut dihapus dan digantikan oleh satu spasi.
  • Spasi yang segera mengikuti tag mulai dihapus.
  • Spasi segera sebelum tag akhir dihapus.
  • Karakter Asia Timur didefinisikan sebagai sekumpulan rentang karakter Unicode U+20000 hingga U+2FFFD dan U+30000 hingga U+3FFFD. Subset ini juga terkadang disebut sebagai ideograf CJK. Untuk informasi selengkapnya, lihat http://www.unicode.org .

"Default" sesuai dengan status yang ditandai dengan nilai default atribut xml:space .

Spasi putih dalam teks dalam, dan primitif string

Aturan normalisasi di atas berlaku untuk teks dalam dalam elemen XAML. Setelah normalisasi, prosesor XAML mengonversi teks dalam apa pun menjadi jenis yang sesuai seperti ini:

  • Jika jenis properti bukan koleksi, tetapi bukan secara langsung jenis Objek , prosesor XAML mencoba mengonversi ke jenis tersebut menggunakan pengonversi jenisnya. Konversi yang gagal di sini menghasilkan kesalahan penguraian XAML.
  • Jika jenis properti adalah koleksi, dan teks dalam berdekatan (tidak ada tag elemen intervensi), teks dalam diurai sebagai String tunggal. Jika jenis koleksi tidak dapat menerima String, ini juga mengakibatkan kesalahan pengurai XAML.
  • Jika jenis properti adalah Objek, maka teks dalam diurai sebagai String tunggal. Jika ada tag elemen intervensi, ini mengakibatkan kesalahan pengurai XAML, karena jenis Objek menyiratkan satu objek (String atau sebaliknya).
  • Jika jenis properti adalah koleksi, dan teks dalam tidak bersebelahan, maka substring pertama dikonversi menjadi String dan ditambahkan sebagai item koleksi, elemen intervensi ditambahkan sebagai item koleksi, dan akhirnya substring berikutnya (jika ada) ditambahkan ke koleksi sebagai item String ketiga.

Spasi putih dan teks con mode tenda ls

Dalam praktiknya, mempertahankan spasi putih hanya menjadi perhatian untuk subset semua kemungkinan con mode tenda ls. Subset tersebut terdiri dari con mode tenda ls yang dapat mengambil jenis String singleton dalam beberapa bentuk, koleksi String khusus, atau campuran String dan jenis lain dalam daftar, koleksi, atau kamus.

Bahkan untuk con mode tenda ls yang dapat mengambil string, perilaku default dalam con ini mode tenda ls adalah bahwa spasi kosong apa pun yang tersisa tidak diperlakukan sebagai signifikan.

Mempertahankan spasi kosong

Beberapa teknik untuk mempertahankan spasi kosong di XAML sumber untuk presentasi akhirnya tidak dipengaruhi oleh normalisasi spasi putih prosesor XAML.

xml:space="preserve": Tentukan atribut ini pada tingkat elemen tempat spasi kosong perlu dipertahankan. Perhatikan bahwa ini mempertahankan semua spasi kosong, termasuk spasi yang mungkin ditambahkan oleh editor kode atau permukaan desain untuk menyelaraskan elemen markup sebagai sarang yang intuitif secara visual. Apakah spasi tersebut dirender lagi masalah con mode tenda l untuk elemen yang mengandung. Kami tidak menyarankan Anda menentukan xml:space="preserve" di tingkat akar, karena sebagian besar model objek tidak menganggap spasi putih sebagai satu atau lain cara yang signifikan. Ini adalah praktik yang lebih baik untuk hanya mengatur atribut secara khusus pada tingkat elemen yang merender spasi kosong dalam string, atau merupakan koleksi signifikan spasi kosong.

Entitas dan spasi non-pembatas: XAML mendukung penempatan entitas Unicode dalam model objek teks. Anda dapat menggunakan entitas khusus seperti ruang tidak pecah (dalam pengodean UTF-8). Anda juga dapat menggunakan kontrol teks kaya yang mendukung karakter spasi yang tidak pecah. Berhati-hatilah jika Anda menggunakan entitas untuk mensimulasikan karakteristik tata letak seperti inden, karena output run-time entitas bervariasi berdasarkan jumlah faktor yang lebih besar daripada fasilitas tata letak umum, seperti penggunaan panel dan margin yang tepat.