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.
XamlServices, .NET tarafından sağlanan ve XAML düğüm akışına veya bu düğümlerden alınan XAML türü sistem bilgilerine özel erişim gerektirmeyen XAML senaryolarını ele almak için kullanılabilen bir sınıftır.
XamlServices API şu şekilde özetlenebilir: XAML yükleme yolunu desteklemek için Load veya Parse, XAML kaydetme yolunu desteklemek için Save ve bir yük yolunu birleştirip yolu kaydeden bir teknik sağlamak için Transform.
Transform, bir XAML şemasından diğerine geçmek için kullanılabilir. Bu konu, bu API sınıflandırmalarının her birini özetler ve belirli yöntem aşırı yüklemeleri arasındaki farkları açıklar.
Yük
çeşitli Load aşırı yüklemeleri, bir yük yolu için tam mantığı uygular. Yük yolu bir biçimde XAML kullanır ve bir XAML düğüm akışı oluşturur. Bu yük yollarının çoğu kodlanmış XML metin dosyası formunda XAML kullanır. Ancak, genel bir akış da yükleyebilir veya farklı bir XamlReader uygulamasında zaten bulunan önceden yüklenmiş bir XAML kaynağını yükleyebilirsiniz.
Çoğu senaryo için en basit aşırı yükleme Load(String). Bu aşırı yükleme, yüklenecek XAML'yi içeren bir metin dosyasının adı olan fileName parametresine sahiptir. Bu, daha önce durumu serileştirilmiş tam güven uygulamaları veya yerel bilgisayara veri gibi uygulama senaryoları için uygundur. Bu, uygulama modelini tanımladığınız ve uygulama davranışını, kullanıcı arabirimini veya XAML kullanan diğer çerçeve tanımlı özellikleri tanımlayan standart dosyalardan birini yüklemek istediğiniz çerçeveler için de kullanışlıdır.
Load(Stream) benzer senaryolara sahiptir. Bu aşırı yükleme, kullanıcının yüklenecek dosyaları seçmesini sağlarsanız yararlı olabilir çünkü Stream, bir dosya sistemine erişebilen diğer System.IO API'lerinin sık sık çıkışıdır. Ya da zaman uyumsuz indirmeler veya akış sağlayan diğer ağ teknikleri aracılığıyla XAML kaynaklarına erişiyor olabilirsiniz. (Akıştan veya kullanıcı tarafından seçilen bir kaynaktan yüklemenin güvenlik açısından etkileri olabilir. Daha fazla bilgi için bkz. XAML Güvenlik Konuları.)
Load(TextReader) ve Load(XmlReader), .NET'in önceki sürümlerindeki biçim okuyucularını kullanan aşırı yüklemelerdir. Bu aşırı yüklemeleri kullanmak için bir okuyucu örneği oluşturmuş ve XAML'yi ilgili formda (metin veya XML) yüklemek için Create API'sini kullanmış olmanız gerekir. Kayıt işaretçilerini diğer okuyucularda zaten taşıdıysanız veya bunlarla başka işlemler gerçekleştirdiyseniz, bu önemli değildir.
Load yük yolu mantığı her zaman kökten XAML girişinin tamamını işler. Aşağıdaki senaryolar bu aşırı yüklemelerin kullanılmasını garanti edebilir:
Tasarım, mevcut XML'ye özgü bir metin düzenleyicisinden basit XAML düzenleme özelliği sağladığınız yüzeyleri oluşturur.
Dosyaları veya akışları açmak için ayrılmış okuyucuları kullandığınız temel System.IO senaryolarının çeşitleri. Mantığınız, XAML olarak yüklenmeye çalışilmeden önce ilkel denetim veya içerik işleme gerçekleştirir.
Bir dosya veya akış yükleyebilir ya da okuyucunun API'leriyle yükleyerek XAML girişinizi sarmalayan bir XmlReader, TextReaderveya XamlReader yükleyebilirsiniz.
Dahili olarak, önceki aşırı yüklemelerin her biri nihai olarak Load(XmlReader)ve geçirilen XmlReader yeni bir XamlXmlReaderoluşturmak için kullanılır.
Daha gelişmiş senaryolar için sağlayan Load imzası Load(XamlReader). Bu imzayı aşağıdaki durumlardan biri için kullanabilirsiniz:
bir XamlReaderkendi uygulamanızı tanımlamış olursunuz.
Varsayılan ayarlardan farklı XamlReader ayarlarını belirtmeniz gerekir.
Varsayılan olmayan ayarlara örnekler:
AllowProtectedMembersOnRoot
BaseUri
IgnoreUidsOnPropertyElements
LocalAssembly
ValuesMustBeString.
XamlServices için varsayılan okuyucu XamlXmlReader. Ayarlarla kendi XamlXmlReader sağlarsanız, varsayılan olmayan XamlXmlReaderSettingsayarlayabilecek özellikler şunlardır:
CloseInput
SkipXmlCompatibilityProcessing
XmlLang
XmlSpacePreserve
Ayrıştırmak
Parse, XAML girişinden bir XAML düğüm akışı oluşturan bir yük yolu API'si olduğundan Load gibidir. Ancak bu durumda, XAML girişi doğrudan yüklenecek tüm XAML'yi içeren bir dize olarak sağlanır.
Parse, uygulama senaryoları için çerçeve senaryolarına göre daha uygun olan basit bir yaklaşımdır. Daha fazla bilgi için bkz. Parse.
Parse, dahili olarak bir Load(XmlReader) içeren sarmalanmış bir StringReader çağrısıdır.
Kurtarmak
çeşitli Save aşırı yüklemeleri kaydetme yolunu uygular. Tüm Save yöntemleri bir nesne grafını giriş olarak alır ve çıktıyı akış, dosya veya XmlWriter/TextWriter örneği olarak üretir.
Giriş nesnesinin, bazı nesne gösteriminin kök nesnesi olması beklenir. Bu, bir iş nesnesinin tek kökü, kullanıcı arabirimi senaryosundaki bir sayfanın nesne ağacının kökü, tasarım aracından çalışma düzenleme yüzeyi veya senaryolara uygun diğer kök nesne kavramları olabilir.
Birçok senaryoda, kaydettiğiniz nesne ağacı, XAML'yi Load veya bir çerçeve/uygulama modeli tarafından uygulanan diğer API'lerle yükleyen özgün bir işlemle ilgilidir. Nesne ağacında yakalanan farklar durum değişiklikleri, uygulamanızın bir kullanıcıdan çalışma zamanı ayarlarını yakaladığı değişiklikler, uygulamanız bir XAML tasarım yüzeyi olduğu için XAML'yi değiştirme vb. olabilir. Değişiklik olsun veya olmasın, önce XAML'yi işaretlemeden yükleme ve sonra yeniden kaydetme ve iki XAML işaretleme formlarını karşılaştırma kavramı bazen XAML'nin gidiş dönüş gösterimi olarak adlandırılır.
İşaretleme formunda ayarlanan karmaşık bir nesneyi kaydetme ve seri hale getirmenin zorluğu, bilgi kaybı olmadan tam temsil arasında denge elde etmek ve XAML'yi daha az insan tarafından okunabilir hale getiren ayrıntı düzeyine ulaşmaktır. Ayrıca, XAML için farklı müşterilerin bu bakiyenin nasıl ayarlanması gerektiğine ilişkin farklı tanımları veya beklentileri olabilir. Save API'leri, bu bakiyenin tek bir tanımını temsil gelir. Save API'leri, kullanılabilir XAML şema bağlamını ve XamlType, XamlMemberve diğer XAML iç ve XAML türü sistem kavramlarının varsayılan CLR tabanlı özelliklerini kullanarak, belirli XAML düğümü akış yapılarının işaretlemeye geri kaydedildiğinde nerede iyileştirilebileceğini belirler. Örneğin, XamlServices kaydetme yolları nesnelerin XamlType çözümlemek için CLR tabanlı varsayılan XAML şema bağlamını kullanabilir, bir XamlType.ContentPropertybelirleyebilir ve ardından özelliği nesnenin XAML içeriğine yazarken özellik öğesi etiketlerini atlayabilir.
Dönüştürmek
Transform bir yük yolunu ve kaydetme yolunu tek bir işlem olarak bağlayarak XAML'yi dönüştürür veya dönüştürür. XamlReader ve XamlWriteriçin farklı bir şema bağlamı veya farklı bir yedekleme türü sistemi kullanılabilir. Bu, sonuçta elde edilen XAML'nin nasıl dönüştürülmesini etkiler. Bu, geniş dönüşüm işlemleri için iyi çalışır.
XAML düğüm akışındaki her düğümü incelemeye dayanan işlemler için genellikle Transformkullanmazsınız. Bunun yerine kendi yük yolu kaydetme yol işlemi serinizi tanımlamanız ve kendi mantığınızı araya almanız gerekir. Yollardan birinde, kendi düğüm döngünüz etrafında bir XAML okuyucu/XAML yazıcı çifti kullanın. Örneğin, XamlXmlReader kullanarak ilk XAML'yi yükleyin ve ardışık Read çağrılarıyla düğümlere geçin. XAML düğümü akış düzeyinde çalışırken artık tek tek düğümleri (türler, üyeler, diğer düğümler) dönüştürme uygulayacak şekilde ayarlayabilir veya düğümü as-isbırakabilirsiniz. Ardından düğümü bir Write ilgili XamlObjectWriter API'sine gönderir ve nesneyi yazarsınız. Daha fazla bilgi için bkz. XAML Düğüm Akış Yapılarını ve Kavramlarını Anlama.
Ayrıca bkz.
.NET Desktop feedback