Aracılığıyla paylaş


XAML ve boşluk

XAML tarafından kullanılan boşluk işleme kuralları hakkında bilgi edinin.

Boşluk işleme

XML ile tutarlı olan XAML'deki boşluk karakterleri boşluk, satır besleme ve sekmedir. Bunlar sırasıyla 0020, 000A ve 0009 Unicode değerlerine karşılık gelir. Varsayılan olarak bu boşluk normalleştirmesi, bir XAML işlemcisi bir XAML dosyasındaki öğeler arasında bulunan herhangi bir iç metinle karşılaştığında oluşur:

  • Doğu Asya karakterleri arasındaki satır besleme karakterleri kaldırılır.
  • Tüm boşluk karakterleri (boşluk, satır besleme, sekme) boşluklara dönüştürülür.
  • Ardışık tüm boşluklar silinir ve bir boşlukla değiştirilir.
  • Başlangıç etiketinin hemen ardından gelen bir alan silinir.
  • Bitiş etiketinden hemen önceki boşluk silinir.
  • Doğu Asya karakterleri , U+20000 ile U+2FFFD ve U+30000 ile U+3FFFD arasında bir Unicode karakter aralığı kümesi olarak tanımlanır. Bu alt küme bazen CJK ideografları olarak da adlandırılır. Daha fazla bilgi için bkz. http://www.unicode.org.

"Varsayılan", xml:space özniteliğinin varsayılan değeriyle belirtilen duruma karşılık gelir.

İç metinde ve dize temel öğelerinde boşluk

Yukarıdaki normalleştirme kuralları XAML öğeleri içindeki iç metne uygulanır. Normalleştirmeden sonra, bir XAML işlemcisi herhangi bir iç metni aşağıdaki gibi uygun bir türe dönüştürür:

  • Özelliğin türü bir koleksiyon değilse, ancak doğrudan bir Nesne türü değilse, XAML işlemcisi türü dönüştürücüsünü kullanarak bu türe dönüştürmeyi dener. Burada başarısız olan bir dönüştürme XAML ayrıştırma hatasına neden olur.
  • Özelliğin türü bir koleksiyonsa ve iç metin bitişikse (araya dahil olan öğe etiketleri yoksa), iç metin tek bir Dize olarak ayrıştırılır. Koleksiyon türü Dize'yi kabul edemiyorsa, bu da bir XAML ayrıştırıcı hatasına neden olur.
  • Özelliğin türü Object ise, iç metin tek bir Dize olarak ayrıştırılır. Araya dahil olan öğe etiketleri varsa, Nesne türü tek bir nesne (Dize veya başka bir şekilde) anlamına geldiği için bu bir XAML ayrıştırıcı hatasıyla sonuçlanır.
  • Özelliğin türü bir koleksiyonsa ve iç metin bitişik değilse, ilk alt dize bir Dizeye dönüştürülür ve koleksiyon öğesi olarak eklenir, araya giren öğe koleksiyon öğesi olarak eklenir ve son olarak da sondaki alt dize (varsa) koleksiyona üçüncü bir Dize öğesi olarak eklenir.

Boşluk ve metin içeriği modelleri

Uygulamada, boşluğun korunması yalnızca tüm olası içerik modellerinin bir alt kümesi için önemlidir. Bu alt küme, tek String türünü, özel bir String koleksiyonunu veya liste, koleksiyon ya da sözlüklerdeki String ve diğer türlerin karışımını alabilen içerik modellerinden oluşur.

Dize alabilen içerik modelleri için bile, bu içerik modellerindeki varsayılan davranış, kalan tüm boşluklar önemli olarak kabul edilmemesidir.

Boşluğu koruma

Son sunu için kaynak XAML'de boşluğu korumaya yönelik çeşitli teknikler, XAML işlemci boşluk normalleştirmesi tarafından etkilenmez.

xml:space="preserve": Bu özniteliği, boşluğun korunması gereken öğe düzeyinde belirtin. Bunun, işaretleme elemanlarını görsel ve sezgisel bir şekilde iç içe yerleştirmek için kod düzenleyicileri veya tasarım yüzeyleri tarafından eklenebilecek boşluklar da dahil olmak üzere tüm boşlukları koruduğunu unutmayın. Bu boşlukların işlenip işlenmeyeceği, yine içeren öğenin içerik modeli ile ilgili bir konudur. Çoğu nesne modeli boşlukları önemli olup olmadığını dikkate almadığından, kök düzeyinde xml:space="preserve" belirtmeniz önerilmez. Özniteliği yalnızca dizeler içinde boşluk oluşturan veya boşluk açısından önemli koleksiyonlar olan öğelerin düzeyinde ayarlamak daha iyi bir uygulamadır.

Varlıklar ve bölünemez boşluklar: XAML, herhangi bir Unicode varlığının bir metin nesnesi modeline yerleştirilmesini destekler. Bölünemez alan gibi ayrılmış varlıkları kullanabilirsiniz (UTF-8 kodlamasında). Bölünemez boşluk karakterlerini destekleyen zengin metin denetimleri de kullanabilirsiniz. Düzen özelliklerini, örneğin girintileri benzetmek için varlıklar kullanıyorsanız dikkatli olun; çünkü varlıkların çalışma zamanı çıktısı, paneller ve kenar boşlukları gibi genel düzen yöntemlerine göre daha fazla faktörden etkilenmektedir.