Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
XAML durumu için önemli boşlukların bir XAML işlemci uygulaması tarafından işlenmesi gerektiğini belirten dil kuralları. Bu makalede bu XAML dil kuralları belgelemektedir. Ayrıca, XAML işlemcisinin Windows Presentation Foundation (WPF) uygulaması ve serileştirme için XAML yazıcısı tarafından tanımlanan ek boşluk işlemeyi belgeler.
Boşluk tanımı
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.
Boşluk normalleştirme
Varsayılan olarak, bir XAML işlemcisi bir XAML dosyasını işlediğinde aşağıdaki boşluk normalleştirmesi gerçekleşir:
Doğu Asya karakterleri arasındaki satır besleme karakterleri kaldırılır. Bu terimin tanımı için bu konunun devamında yer alan "Doğu Asya Karakterleri" bölümüne bakın.
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ş etiketi silinmeden hemen önce bir alan.
"Varsayılan", xml:space özniteliğinin varsayılan değeriyle belirtilen duruma karşılık gelir.
İç metinde boşluk ve dize ilkelleri
Önceki normalleştirme kuralları, XAML öğeleri içinde bulunan iç metne uygulanır. Normalleştirmeden sonra, XAML işlemcisi tüm iç metinleri 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 Object 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 bir dönüştürme derleme zamanı 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 Stringolarak ayrıştırılır. Koleksiyon türü Stringkabul edemiyorsa bu, derleme zamanı hatasına da neden olur.
Özelliğin türü Objectise, iç metin tek bir Stringolarak ayrıştırılır. Araya dahil olan öğe etiketleri varsa, Object türü tek bir nesne (String veya başka bir şekilde) anlamına geldiği için bu bir derleme zamanı hatasına neden olur.
Özelliğin türü bir koleksiyonsa ve iç metin bitişik değilse, ilk alt dize bir String dönüştürülür ve koleksiyon öğesi olarak eklenir, araya giren öğe koleksiyon öğesi olarak eklenir ve son olarak sondaki alt dize (varsa) koleksiyona üçüncü bir String öğesi olarak eklenir.
Boşluğu koruma
XAML işlemci boşluk normalleştirmesi tarafından etkilenmeyen son sunu için kaynak XAML'de boşluk korumaya yönelik çeşitli teknikler vardır.
xml:space="preserve": Bu özniteliği, boşluk korumasının istendiği öğe düzeyinde belirtin. Bu, öğeleri görsel olarak sezgisel bir iç içe yerleştirme olarak "oldukça yazdırmak" için kod düzenleme uygulamaları tarafından eklenebilen boşlukları içeren tüm boşlukları korur. Ancak, bu alanların işlenip işlenmediği, içeren öğenin içerik modeli tarafından belirlenir. Nesne modellerinin çoğu özniteliği nasıl ayarladığınızdan bağımsız olarak boşluk değerini önemli olarak değerlendirmediğinden kök düzeyinde xml:space="preserve"
belirtmekten kaçının.
xml:space
genel olarak ayarlanması, bazı uygulamalarda XAML işleme (özellikle serileştirme) üzerinde performans sonuçlarına neden olabilir. Özniteliği yalnızca dizeler içinde boşluk oluşturan veya boşluk açısından önemli koleksiyonlar olan öğeler düzeyinde ayarlamak daha iyi bir uygulamadır.
Varlıklar ve hataya neden olmayan boşluklar: XAML, herhangi bir Unicode varlığının bir metin nesnesi modeline yerleştirilmesini destekler. Bölünemez alan ( UTF-8 kodlamasında) gibi ayrılmış varlıkları kullanabilirsiniz. Bölünemez boşluk karakterlerini destekleyen zengin metin denetimleri de kullanabilirsiniz. Varlıkları, indention gibi düzen özelliklerinin benzetimini yapmak için kullanıyorsanız dikkatli olmanız gerekir çünkü varlıkların çalışma zamanı çıkışı, indention oluşturma özelliklerinin, panellerin ve kenar boşluklarının düzgün kullanımı gibi tipik bir düzen sisteminde elde edilecek özelliklerden daha fazla sayıda faktöre göre değişir. Örneğin, varlıklar yazı tiplerine eşlenir ve kullanıcı yazı tipi seçimine yanıt olarak boyutu değiştirebilir.
Doğu Asya karakterleri
"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. https://www.unicode.org.
Boşluk ve metin içeriği modelleri
Uygulamada, boşlukların korunması yalnızca tüm olası içerik modellerinin bir alt kümesi için önemlidir. Bu alt küme, bir biçimde tek String türü, ayrılmış bir String koleksiyonu veya String veya IList koleksiyonundaki ICollection<T> ve diğer türlerin karışımını alabilen içerik modellerinden oluşur.
WPF'de boşluk ve metin içeriği modelleri
Çizim amacıyla, bu bölümün geri kalanı WPF tarafından tanımlanan belirli türlere başvurur. Bu makalede açıklanan boşluk işleme özellikleri hem .NET XAML Hizmetleri hem de WPF için geçerlidir. Bu davranışın nasıl çalıştığını görmek için bazı WPF XAML işaretlemeleriyle denemeler yapıp sonuçları bir nesne grafında görüntüleyebilir ve işaretlemeyi yeniden seri hale getirebilirsiniz.
Dize alabilen içerik modelleri için bile, bu içerik modellerindeki varsayılan davranış, kalan boşlukların önemli olarak kabul edilmemesidir. Örneğin, ListBox bir IListalır, ancak boşluk (her ListBoxItemarasındaki satır beslemeleri gibi) korunmaz ve işlenmez. ListBoxItem öğeleri için dizeler arasında ayırıcı olarak satır beslemeleri kullanmayı denerseniz, hiç çalışmaz; satır beslemeleri ile ayrılan dizeler bir dize ve bir öğe olarak kabul edilir.
Boşlukları önemli olarak değerlendiren koleksiyonlar genellikle akış belgesi modelinin bir parçasıdır. Boşluk koruma davranışını destekleyen birincil koleksiyon InlineCollection. Bu koleksiyon sınıfı WhitespaceSignificantCollectionAttributeile bildirilir; bu öznitelik bulunduğunda, XAML işlemcisi koleksiyondaki boşluğu önemli olarak kabul eder.
xml:space="preserve"
belirtilen bir koleksiyondaki WhitespaceSignificantCollectionAttribute ve boşluk birleşimi, tüm boşlukların korunması ve işlenmesidir. bir xml:space="default"
içindeki WhitespaceSignificantCollectionAttribute ve boşluk birleşimi, daha önce açıklanan ilk boşluk normalleştirmesine neden olur ve bu da belirli konumlarda bir boşluk bırakır ve bu boşluklar korunur ve işlenir. Hangi davranışın istendiği size bağlı ve istediğiniz davranışı etkinleştirmek için xml:space
seçmeli olarak kullanmanız gerekir.
Ayrıca, akış belgesi modelinde satır sonunu belirten bazı satır içi öğeler, boşluk açısından önemli bir koleksiyonda bile kasıtlı olarak fazladan alan eklememelidir. Örneğin, LineBreak öğesi HTML'deki <BR/> etiketiyle aynı amaca sahiptir ve işaretlemede okunabilirlik için, genellikle bir LineBreak sonraki metinlerden yazarlı bir satır beslemesi ile ayrılır. Bu satır beslemesi, sonraki satırda önde gelen bir boşluk olacak şekilde normalleştirilmemelidir. Bu davranışı etkinleştirmek için, LineBreak öğesinin sınıf tanımı, XAML işlemcisi tarafından TrimSurroundingWhitespaceAttribute çevreleyen boşluğun her zaman kırpıldığı anlamına gelen LineBreakuygular.
Ayrıca bkz.
- XAML'ye genel bakış (WPF .NET)
- XML karakter varlıklarını ve XAML
- XAML
xml:space işleme
.NET Desktop feedback