XAML Hizmetleri

Bu konu, .NET XAML Hizmetleri olarak bilinen 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ını ve şema desteği fabrikalarını, sınıflara öznitelik atanmasını, XAML dil iç desteğini ve diğer XAML dil özelliklerini kapsar.

Bu Belge Hakkında

.NET XAML Hizmetleri kavramsal belgelerinde, XAML diliyle ilgili deneyime ve Windows Presentation Foundation (WPF) veya Windows Workflow Foundation gibi belirli bir çerçeveye ya da Microsoft.Build.Framework.XamlTypes içindeki derleme özelleştirme özellikleri gibi belirli bir teknoloji özelliği alanına nasıl uygulanabileceği konusunda bilgi sahibi olduğunuz kabul edilir. Bu belgeler XAML biçimlendirme dili, XAML söz dizimi terminolojisi veya diğer giriş niteliğindeki malzemeleri açıklamaya çalışmaz. Bunun yerine bu belge özellikle System.Xaml derleme kitaplığında etkinleştirilen .NET XAML Hizmetlerini 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 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 tarafından kullanılabilir özel türler tanımlama ve XAML türü sistem özelliklerini .NET XAML Hizmetlerine iletmek için türleri belirleme.

  • 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 (işaretleme uzantıları, özel türler için tür dönüştürücüleri) yazma.

  • Özel bir XAML şema bağlamı tanımlama (yedekleme türü kaynakları için alternatif derleme yükleme teknikleri kullanma, derlemeleri her zaman yansıtmak yerine bilinen türlerde arama tekniklerini kullanma, ortak dil çalışma zamanını (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 veya Invoker tekniklerini kullanma.

XAML dili hakkında giriş düzeyinde bilgilere ulaşmak istiyorsanız XAML’ye genel bakış (WPF .NET) sayfasını inceleyebilirsiniz. Bu konuda hem Windows Presentation Foundation (WPF) hem de XAML işaretlemesi ile XAML dil özelliklerini kullanma konusunda başlangıç düzeyinde olan hedef kitle için XAML açıklanmaktadır. Bir diğer yararlı belge de XAML dil belirtimindeki giriş niteliğindeki materyallerdir.

.NET XAML Hizmetleri ve .NET Mimarisinde System.Xaml

.NET XAML Hizmetleri ve System.Xaml derlemesi, XAML dil özelliklerini desteklemek için gerekenlerin çoğunu tanımlar. Bu, XAML okuyucuları ve XAML yazarları 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 tür sistemi gösterimidir. Tür sistemi gösterimi, XAML'yi çerçevelerin belirli özelliklerine bağımlı olmadan XAML özelliklerine odaklanan nesne odaklı bir şekilde sunar.

XAML tür sistemi, XAML kaynağının işaretleme formu veya çalışma zamanı özellikleriyle veya herhangi bir belirli yedekleme türü sistemiyle sınırlı değildir. XAML tür sistemi türler, üyeler, XAML şema bağlamları, XML düzeyindeki kavramlar ve diğer XAML dil kavramları veya XAML iç kavramları için nesne gösterimlerini 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ğinin bir çerçeve, teknoloji veya XAML kullanan veya yayan bir uygulama tarafından etkinleştirilen belirli özelliklere genişletilmesine olanak tanır. XAML şema bağlamı kavramı, bir XAML nesne yazıcı uygulamasının bağlamdaki derleme bilgileri aracılığıyla iletişim kuran bir teknolojinin destek türü sisteminin ve XAML düğüm kaynağının birleşiminden pratik nesne grafı yazma işlemleri oluşturulmasını sağlar. XAML şema kavramı hakkında daha fazla bilgi için. Bkz . Varsayılan XAML Şema Bağlamı ve WPF XAML Şema Bağlamı.

XAML Düğüm Akışları, XAML Okuyucuları ve XAML Yazıcıları

.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 nasıl şekillendirdiğini ve terminolojiyi anlamak yararlı olur. XAML düğüm akışı, XAML dil gösterimi ile XAML’nin temsil ettiği veya tanımladığı nesne grafı arasında kavramsal bir aracıdır.

  • XAML okuyucusu, XAML’yi bir şekilde işleyen ve bir XAML düğümü akışı oluşturan bir varlıktır. API’de XAML okuyucu, XamlReader temel sınıfıyla temsil edilir.

  • XAML yazıcısı, bir XAML düğümü akışını işleyen ve başka bir şey üreten bir varlıktır. API’de XAML yazıcı, XamlWriter temel sınıfıyla 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 bu belgelerde genellikle yük yolu olarak adlandırılır. Var olan bir nesne grafını XAML’ye kaydetme veya seri hale getirme işlemi bu belgelerde genellikle kaydetme yolu olarak adlandırılır.

    En yaygın yük yolu türü aşağıdaki şekilde açıklanabilir:

  • UTF kodlamalı XML biçiminde olan ve metin dosyası olarak kaydedilmiş bir XAML gösterimiyle başlayın.

  • Bu XAML dosyasını XamlXmlReader içine yükleyin. XamlXmlReader, bir XamlReader alt sınıfıdır.

  • Sonuçta bir XAML düğümü akışı elde edilir. XamlXmlReader / XamlReader API’sini kullanarak XAML düğüm akışının ayrı düğümlerine erişebilirsiniz. Buradaki en tipik işlem, XAML düğümü akışında ilerlemek ve “geçerli kayıt” metaforunu kullanarak her düğümü sırasıyla işlemektir.

  • Elde edilen düğümleri XAML düğüm akışından 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 için bir nesne grafı yazar. Nesne yazma, bir XAML şema bağlamı ve bir yedekleme türü sistemi ve çerçevesinin derlemelerine ve türlerine erişebilen bir uygulamanın yardımıyla yapılır.

  • Nesne grafının kök nesnesini almak için XAML düğüm akışının sonunda Result çağrısı yapın.

    En yaygın kayıt yolu türü aşağıdaki şekilde açıklanabilir:

  • Tüm uygulama çalışma zamanının nesne grafı, çalışma zamanının kullanıcı arabirimi içeriği ve durumu ya da bir uygulamanın çalışma zamanındaki 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 başlayarak nesneleri XamlObjectReader içine yükleyin. XamlObjectReader, bir XamlReader alt sınıfıdır.

  • Sonuçta bir XAML düğümü akışı elde edilir. XamlObjectReader ve XamlReader API’sini kullanarak XAML düğüm akışının ayrı düğümlerine erişebilirsiniz. Buradaki en tipik işlem, XAML düğümü akışında ilerlemek ve “geçerli kayıt” metaforunu kullanarak her düğümü sırasıyla işlemektir.

  • Elde edilen düğümleri XAML düğüm akışından XamlXmlWriter API’sine geçirin. XamlXmlWriter, bir XamlWriter alt sınıfıdır.

  • XamlXmlWriter, XAML’yi XML UTF kodlamasıyla yazar. Bunu metin dosyası olarak, akış olarak veya farklı biçimlerde kaydedebilirsiniz.

  • Son çıkışı almak için Flush çağrısı yapı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.

XamlServices Sınıfı

XAML düğümü akışıyla ilgilenmek her zaman şart 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 XAML girişinizi bu okuyucu API’leriyle yükleyerek sarmalayan bir XmlReader, TextReader veya XamlReader yükleyebilirsiniz.

  • Çeşitli Save imzaları nesne grafını kaydeder ve akış, dosya veya XmlWriter/TextWriter örneği olarak çıkış oluşturur.

  • Transform bir yük yolunu ve bir kaydetme yolunu tek bir işlem olarak bağlayarak XAML’yi dönüştürür. XamlReader ve XamlWriter için farklı bir şema bağlamı veya farklı bir yedekleme türü sistemi kullanılabilir. Bu, sonuçta elde edilen XAML’nin dönüştürülme şeklini etkiler.

XamlServices kullanımı hakkında daha fazla bilgi için bkz. XAMLServices Sınıfı ve Temel XAML Okuma veya Yazma.

XAML Tür Sistemi

XAML tür sistemi, XAML düğüm akışının belirli bir düğümüyle çalışmak 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 işlediğiniz nesneyi tanımlar.

XamlMember bir nesnenin üyesinin gösterimidir. Bir başlangıç üyesi düğümü ile bitiş üyesi düğümü arasında işlediğiniz üyeyi tanımlar.

GetAllMembers, GetMember ve DeclaringType gibi API’ler, XamlType ile XamlMember arasındaki ilişkiyi raporlar.

.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 devralmaya eşlenir ve örnek kavramları ile değer türleri de CLR’nin destekleyici davranışları ve özellikleriyle eşlenir.

XAML Dil Özellikleri Başvurusu

.NET XAML Hizmetleri, XAML’yi desteklemek için 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, .NET XAML Hizmetleri tarafından tanımlanan bir XAML okuyucusu veya XAML yazıcısı tarafından işlendiğinde bu dil özelliklerinin nasıl davrandığı açısından belgelenmiştir. Daha fazla bilgi için bkz. XAML Ad Alanı (x:) Dil Özellikleri.