XAML Hizmetleri
Bu konu, .NET XAML Hizmetleri olarak bilinen bir teknoloji kümesinin özelliklerini açıklar. Açıklanan hizmetlerin ve API'lerin çoğu System.Xaml
derlemesinde bulunur. Hizmetler okuyucular ve yazarlar, şema sınıfları ve şema desteği, fabrikalar, sınıfların attributingi, XAML dili iç desteği ve diğer XAML dil özelliklerini içerir.
.NET XAML Hizmetleri kavramsal belgelerinde, XAML diliyle ilgili daha önce deneyim sahibi olduğunuz ve bunun windows Presentation Foundation (WPF) veya Windows Workflow Foundation gibi belirli bir çerçeveye nasıl uygulanabileceği ya da Microsoft.Build.Framework.XamlTypes'deki derleme özelleştirme özellikleri gibi belirli bir teknoloji özelliği alanına uygulanabileceği varsayılır. Bu belge, işaretleme dili, XAML söz dizimi terminolojisi veya diğer giriş niteliğindeki malzemeler olarak XAML'nin temellerini açıklamaya çalışmaz. Bunun yerine, bu belge özellikle System.Xaml derleme kitaplığında etkinleştirilen .NET XAML Hizmetleri'ni kullanmaya odaklanır. Bu API'lerin çoğu XAML dil tümleştirmesi ve genişletilebilirlik senaryolarına yöneliktir. Bu, aşağıdaki senaryolardan herhangi birini içerebilir:
Temel XAML okuyucularının veya XAML yazıcılarının özelliklerini genişletme (doğrudan XAML düğümü akışını işleme; kendi XAML okuyucunuzu veya XAML yazıcınızı türetme).
Belirli çerçeve bağımlılıkları olmayan XAML kullanılabilir özel türleri tanımlama ve XAML türü sistem özelliklerini .NET XAML Hizmetlerine iletmek için türleri attributing.
XAML okuyucularını veya XAML yazıcılarını görsel tasarımcı veya XAML işaretleme kaynakları için etkileşimli düzenleyici gibi bir uygulamanın bileşeni olarak barındırma.
XAML değer dönüştürücüleri yazma (işaretleme uzantıları; özel türler için tür dönüştürücüleri).
Özel bir XAML şema bağlamı tanımlama (tür kaynaklarını yedeklemek için alternatif derleme yükleme teknikleri kullanarak; her zaman derlemeleri yansıtmak yerine bilinen türler arama tekniklerini kullanarak; ortak dil çalışma zamanı (CLR)
AppDomain
ve ilişkili güvenlik modelini kullanmayan yüklü derleme kavramlarını kullanma).Temel XAML türü sistemini genişletme.
XAML tür sistemini ve tür yedeklemelerinin değerlendirilme şeklini etkilemek için
Lookup
veyaInvoker
tekniklerini kullanma.
Bir dil olarak XAML'de giriş malzemeleri arıyorsanız, XAML'e genel bakış (WPF .NET)deneyebilirsiniz. Bu konu başlığında hem Windows Presentation Foundation (WPF) ile hem de XAML işaretlemesi ve XAML dil özelliklerini kullanmaya yeni eklenen bir hedef kitle için XAML açıklanmaktadır. Başka bir yararlı belge,
.NET XAML Hizmetleri ve System.Xaml
derlemesi, XAML dil özelliklerini desteklemek için gerekenlerin çoğunu tanımlar. Bu, XAML okuyucuları ve XAML yazıcıları için temel sınıfları içerir. Çerçeveye özgü XAML uygulamalarından hiçbirinde bulunmayan .NET XAML Hizmetlerine eklenen en önemli özellik, XAML için bir tür sistem gösterimidir. Tür sistemi gösterimi, XAML'yi çerçevelerin belirli özelliklerine bağımlılık almadan XAML özelliklerini ortalayan nesne odaklı bir şekilde sunar.
XAML türü sistemi, XAML kaynağının işaretleme formu veya çalışma zamanı özellikleriyle sınırlı değildir; veya belirli bir yedekleme türü sistemiyle sınırlı değildir. XAML türü sistemi türler, üyeler, XAML şema bağlamları, XML düzeyi kavramları ve diğer XAML dil kavramları veya XAML iç kavramları için nesne gösterimleri içerir. XAML türü sisteminin kullanılması veya genişletilmesi, XAML okuyucuları ve XAML yazıcıları gibi sınıflardan türetilmesine ve XAML gösterimlerinin işlevselliğini bir çerçeve, teknoloji veya XAML kullanan veya yayan bir uygulamanın etkinleştirdiği belirli özelliklere genişletmeyi mümkün kılar. XAML şema bağlamı kavramı, bir XAML nesne yazıcı uygulaması, bağlamdaki derleme bilgileri aracılığıyla iletilen bir teknolojinin destek türü sistemi ve XAML düğüm kaynağı birleşiminden pratik nesne grafı yazma işlemlerini etkinleştirir. XAML şema kavramı hakkında daha fazla bilgi için. bkz. Varsayılan XAML Şema Bağlamı ve WPF XAML Şema Bağlamı.
.NET XAML Hizmetlerinin XAML dili ile XAML'yi dil olarak kullanan belirli teknolojiler arasındaki ilişkide oynadığı rolü anlamak için, XAML düğüm akışı kavramını ve bu kavramın API'yi ve terminolojiyi nasıl şekillendirdiğini anlamak yararlı olur. XAML düğüm akışı, XAML dil gösterimi ile XAML'nin temsil ettiği veya tanımladığı nesne grafiği arasındaki kavramsal bir ara adır.
XAML okuyucusu, XAML'yi bir biçimde işleyen ve bir XAML düğümü akışı üreten bir varlıktır. API'de bir XAML okuyucusu XamlReadertemel sınıfıyla temsil edilir.
XAML yazıcısı, XAML düğüm akışını işleyen ve başka bir şey üreten bir varlıktır. API'de, bir XAML yazıcısı XamlWritertemel sınıfı tarafından temsil edilir.
XAML ile ilgili en yaygın iki senaryo, nesne grafı oluşturmak için XAML'yi yüklemek, bir uygulama veya araçtan nesne grafı kaydetmek ve bir XAML gösterimi (genellikle metin dosyası olarak kaydedilen işaretleme biçiminde) oluşturmaktır. XAML yükleme ve nesne grafı oluşturma işlemi genellikle bu belgelerde yük yolu olarak adlandırılır. Mevcut bir nesne grafını XAML'ye kaydetme veya seri hale getirme işlemi genellikle bu belgelerde kaydetme yolu olarak adlandırılır.
En yaygın yük yolu türü aşağıdaki gibi açıklanabilir:
UTF ile kodlanmış XML biçiminde ve metin dosyası olarak kaydedilmiş bir XAML gösterimiyle başlayın.
Bu XAML'yi XamlXmlReaderyükleyin. XamlXmlReader bir XamlReader alt sınıfıdır.
Sonuç bir XAML düğümü akışıdır. XamlXmlReader / XamlReader API'sini kullanarak XAML düğüm akışının tek tek düğümlerine erişebilirsiniz. Buradaki en tipik işlem, "geçerli kayıt" metaforu kullanarak her düğümü işleyen XAML düğüm akışında ilerlemektir.
XAML düğüm akışından elde edilen düğümleri bir XamlObjectWriter API'sine geçirin. XamlObjectWriter bir XamlWriter alt sınıfıdır.
XamlObjectWriter, kaynak XAML düğümü akışında ilerlemeye uygun olarak tek seferde bir nesne olan bir nesne grafı yazar. Nesne yazma, bir XAML şema bağlamının yardımıyla ve bir yedekleme türü sistemi ve çerçevesinin derlemelerine ve türlerine erişebilen bir uygulama yardımıyla yapılır.
Nesne grafiğinin kök nesnesini almak için XAML düğüm akışının sonundaki Result çağırın.
En yaygın kaydetme yolu türü aşağıdaki gibi açıklanabilir:
Tüm uygulama çalışma zamanının nesne grafiği, kullanıcı arabirimi içeriği ve çalışma zamanının durumu veya çalışma zamanında genel bir uygulamanın nesne gösteriminin daha küçük bir kesimiyle başlayın.
Uygulama kökü veya belge kökü gibi mantıksal bir başlangıç nesnesinden nesneleri XamlObjectReaderiçine yükleyin. XamlObjectReader bir XamlReader alt sınıfıdır.
Sonuç bir XAML düğümü akışıdır. XamlObjectReader ve XamlReader API'sini kullanarak XAML düğüm akışının tek tek düğümlerine erişebilirsiniz. Buradaki en tipik işlem, "geçerli kayıt" metaforu kullanarak her düğümü işleyen XAML düğüm akışında ilerlemektir.
XAML düğüm akışından elde edilen düğümleri bir XamlXmlWriter API'sine geçirin. XamlXmlWriter bir XamlWriter alt sınıfıdır.
XamlXmlWriter bir XML UTF kodlamasında XAML yazar. Bunu metin dosyası olarak, akış olarak veya başka biçimlerde kaydedebilirsiniz.
Son çıkışı almak için Flush'ı çağırın.
XAML düğümü akış kavramları hakkında daha fazla bilgi için bkz. XAML Düğüm Akış Yapılarını ve Kavramlarını Anlama.
Her zaman bir XAML düğüm akışıyla ilgilenmek gerekli değildir. Temel bir yük yolu veya temel bir kaydetme yolu istiyorsanız, XamlServices sınıfında API'leri kullanabilirsiniz.
Çeşitli Load imzaları bir yük yolu uygular. Bir dosya veya akış yükleyebilir ya da okuyucunuzun API'leriyle yükleyerek XAML girişinizi sarmalayan bir XmlReader, TextReader veya XamlReader yükleyebilirsiniz.
çeşitli Save imzaları bir nesne grafiği kaydeder ve çıktıyı akış, dosya veya XmlWriter/TextWriter örneği olarak üretir.
Transform, bir yük yolunu ve kaydetme yolunu tek bir işlem olarak bağlayarak XAML'yi 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.
XamlServiceskullanma hakkında daha fazla bilgi için bkz. XAMLServices Sınıfı ve Temel XAML Okuma veya Yazma.
XAML türü sistemi, XAML düğüm akışının belirli bir tek düğümüyle çalışması için gereken API'leri sağlar.
XamlType, bir nesnenin gösterimidir; bir başlangıç nesnesi düğümü ile bitiş nesnesi düğümü arasında ne işliyorsanız.
XamlMember, bir nesnenin üyesinin gösterimidir. Başlangıç üyesi düğümü ile son üye düğümü arasında ne işliyorsunuz?
GetAllMembers, GetMember ve DeclaringType gibi API'ler XamlType ile XamlMemberarasındaki ilişkileri rapor eder.
.NET XAML Hizmetleri tarafından uygulanan XAML türü sisteminin varsayılan davranışı, ortak dil çalışma zamanını (CLR) ve yansıma kullanarak derlemelerdeki CLR türlerinin statik analizini temel alır. Bu nedenle, belirli bir CLR türü için, XAML türü sisteminin varsayılan uygulaması bu türdeki XAML şemasını ve üyelerini kullanıma seçip XAML türü sistemi açısından raporlayabilir. Varsayılan XAML türü sisteminde, türlerin atanabilirliği kavramı CLR devralma işlemine eşlenir ve örneklerin, değer türlerinin vb. kavramları da CLR'nin destekleyici davranışlarına ve özelliklerine eşlenir.
XAML'yi desteklemek için .NET XAML Hizmetleri, XAML dili XAML ad alanı için tanımlanan XAML dil kavramlarının belirli bir uygulamasını sağlar. Bunlar belirli başvuru sayfaları olarak belgelenmiştir. Dil özellikleri, bu dil özelliklerinin .NET XAML Hizmetleri tarafından tanımlanan bir XAML okuyucusu veya XAML yazıcısı tarafından işlendiğinde nasıl davrandığı açısından belgelenmiştir. Daha fazla bilgi için bkz. XAML Ad Alanı (x:) Dil Özellikleri.
.NET Desktop feedback geri bildirimi
.NET Desktop feedback, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin: