Sdílet prostřednictvím


Služby XAML

Toto téma popisuje možnosti sady technologií označované jako služby .NET XAML Services. Většina popsaných služeb a rozhraní API jsou umístěny v sestavení System.Xaml. Mezi služby patří čtenáři a zapisovače, třídy schématu a podpora schématu, továrny, přisuzování tříd, vnitřní podpora jazyka XAML a další jazykové funkce XAML.

O této dokumentaci

Koncepční dokumentace pro služby .NET XAML Services předpokládá, že máte zkušenosti s jazykem XAML a jak se může použít pro konkrétní architekturu, například Windows Presentation Foundation (WPF) nebo Windows Workflow Foundation nebo konkrétní oblast funkcí technologie, například funkce sestavení přizpůsobení v Microsoft.Build.Framework.XamlTypes. Tato dokumentace se nepokoušá vysvětlit základy JAZYKa XAML jako jazyka značek, terminologie syntaxe XAML ani jiného úvodního materiálu. Místo toho se tato dokumentace zaměřuje na použití služeb .NET XAML, které jsou povoleny v knihovně sestavení System.Xaml. Většina těchto rozhraní API je určená pro scénáře integrace jazyka XAML a rozšiřitelnosti. Může se jednat o některý z následujících scénářů:

  • Rozšíření možností základních čteček XAML nebo zapisovačů XAML (přímé zpracování datového proudu uzlu XAML, odvozování vlastní čtečky XAML nebo zapisovače XAML)

  • Definování vlastníchtypůchCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCH XAMLm jazyka XAML, které nemají specifické

  • Hostování čtenářů XAML nebo zapisovačů XAML jako součásti aplikace, například vizuálního návrháře nebo interaktivního editoru pro zdroje značek XAML.

  • Zápis převaděčů hodnot XAML (rozšíření značek; převaděče typů pro vlastní typy)

  • Definování vlastního kontextu schématu XAML (použití alternativních technik načítání sestavení pro záložní zdroje typů; použití technik vyhledávání známých typů místo vždy reflektující sestavení; použití načtených konceptů sestavení, které nepoužívají modul CLR (Common Language Runtime) AppDomain a přidružený model zabezpečení).

  • Rozšíření základního systému typů XAML

  • Použití Lookup nebo Invoker technik k ovlivnění systému typů XAML a způsobu vyhodnocování backingů typů.

Pokud hledáte úvodní materiály pro XAML jako jazyk, můžete zkusit přehled XAML (WPF .NET). Toto téma popisuje XAML pro cílovou skupinu, která je novinkou ve Windows Presentation Foundation (WPF), a také použití značek XAML a jazykových funkcí XAML. Dalším užitečným dokumentem je úvodní materiály ve specifikaci jazyka XAML .

Služby .NET XAML a System.Xaml v architektuře .NET

Služby .NET XAML a sestavení System.Xaml definují většinu toho, co je potřeba pro podporu jazykových funkcí XAML. To zahrnuje základní třídy pro čtenáře XAML a zapisovače XAML. Nejdůležitější funkcí přidanou do služeb .NET XAML, které nebyly přítomny v žádné implementaci XAML specifické pro architekturu, je reprezentace typu systému pro XAML. Reprezentace systému typů představuje XAML objektově orientovaným způsobem, který se soustředí na funkce XAML, aniž by se závislosti na konkrétních schopnostech architektur.

Systém typů XAML není omezen formátem značek nebo specifikami běhu původu XAML; není omezena žádným konkrétním systémem záložního typu. Systém typů XAML obsahuje reprezentace objektů pro typy, členy, kontexty schématu XAML, koncepty na úrovni XML a další koncepty jazyka XAML nebo vnitřní prvky XAML. Použití nebo rozšíření systému typů XAML umožňuje odvodit z tříd, jako jsou čtečky XAML a zapisovače XAML, a rozšířit funkce reprezentací XAML na konkrétní funkce povolené architekturou, technologií nebo aplikací, která využívá nebo generuje XAML. Koncept kontextu schématu XAML umožňuje praktickým operacím zápisu objektového grafu z kombinace implementace zapisovače objektů XAML, systému typu backing technologie, který je komunikován prostřednictvím informací o sestavení v kontextu a zdroje uzlu XAML. Další informace o konceptu schématu XAML. viz výchozí kontext schématu XAML a kontext schématu WPF XAML.

Streamy uzlů XAML, čtenáře XAML a zapisovače XAML

Abyste pochopili roli, kterou hraje služba .NET XAML Services ve vztahu mezi jazykem XAML a konkrétními technologiemi, které používají XAML jako jazyk, je užitečné porozumět konceptu datového proudu uzlu XAML a tomu, jak tento koncept tvaruje rozhraní API a terminologii. Stream uzlu XAML je koncepční zprostředkující mezi reprezentací jazyka XAML a grafem objektů, který XAML představuje nebo definuje.

  • Čtečka XAML je entita, která zpracovává XAML v nějaké podobě a vytváří datový proud uzlu XAML. V rozhraní API je čtečka XAML reprezentována základní třídou XamlReader.

  • Zapisovač XAML je entita, která zpracovává datový proud uzlu XAML a vytváří něco jiného. V rozhraní API je zapisovač XAML reprezentován základní třídou XamlWriter.

    Dva nejběžnější scénáře týkající se XAML načítají XAML pro vytvoření instance objektového grafu a uložení grafu objektu z aplikace nebo nástroje a vytvoření reprezentace XAML (obvykle ve formátu revize uloženém jako textový soubor). Načítání XAML a vytváření grafu objektů se často označuje v této dokumentaci jako cesta načítání. Uložení nebo serializace existujícího objektového grafu do XAML se často označuje v této dokumentaci jako cesta k uložení.

    Nejběžnější typ cesty načtení je možné popsat takto:

  • Začněte reprezentací XAML ve formátu XML s kódováním UTF a uložte ho jako textový soubor.

  • Načtěte tento XAML do XamlXmlReader. XamlXmlReader je podtřída XamlReader.

  • Výsledkem je stream uzlu XAML. K jednotlivým uzlům datového proudu uzlu XAML můžete přistupovat pomocí rozhraní XamlXmlReader / XamlReader API. Nejběžnější operací je projít streamem uzlu XAML a zpracovat každý uzel pomocí metafory "aktuálního záznamu".

  • Předejte výsledné uzly z datového proudu uzlu XAML do rozhraní API XamlObjectWriter. XamlObjectWriter je podtřída XamlWriter.

  • XamlObjectWriter zapisuje graf objektů, jeden objekt najednou, v souladu s průběhem prostřednictvím streamu zdrojového uzlu XAML. Zápis objektů se provádí pomocí kontextu schématu XAML a implementace, která má přístup k sestavením a typům systému a architektury backingového typu.

  • Voláním Result na konci datového proudu uzlu XAML získejte kořenový objekt grafu objektu.

    Nejběžnější typ cesty uložení je možné popsat takto:

  • Začněte s objektovým grafem celé doby běhu aplikace, obsahem uživatelského rozhraní a stavem doby běhu nebo menším segmentem celkové reprezentace objektu aplikace za běhu.

  • Z logického spouštěcího objektu, jako je kořenový adresář aplikace nebo kořen dokumentu, načtěte objekty do XamlObjectReader. XamlObjectReader je podtřída XamlReader.

  • Výsledkem je stream uzlu XAML. K jednotlivým uzlům streamu uzlu XAML můžete přistupovat pomocí XamlObjectReader a rozhraní API XamlReader. Nejběžnější operací je projít streamem uzlu XAML a zpracovat každý uzel pomocí metafory "aktuálního záznamu".

  • Předejte výsledné uzly z datového proudu uzlu XAML do rozhraní API XamlXmlWriter. XamlXmlWriter je podtřída XamlWriter.

  • XamlXmlWriter zapíše XAML do kódování XML UTF. Můžete ho uložit jako textový soubor, jako datový proud nebo v jiných formulářích.

  • Voláním Flush získejte konečný výstup.

Další informace o konceptech datových proudů uzlů XAML najdete v tématu Principy struktur a konceptů datových proudů uzlů XAML.

Třída XamlServices

Není vždy nutné zabývat se streamem uzlu XAML. Pokud chcete základní cestu k načtení nebo základní cestu pro uložení, můžete použít rozhraní API ve třídě XamlServices.

  • Různé podpisy Load implementují cestu načtení. Můžete buď načíst soubor nebo datový proud, nebo můžete načíst XmlReader, TextReader nebo XamlReader, které zabalí vstup XAML načtením pomocí rozhraní API dané čtečky.

  • Různé podpisy Save uloží graf objektů a vytvoří výstup jako stream, soubor nebo instanci XmlWriter/TextWriter.

  • Transform převede XAML propojením cesty načtení a cesty uložení jako jedné operace. Pro XamlReader a XamlWriterlze použít jiný kontext schématu nebo jiný systém backingových typů, což ovlivňuje způsob transformace výsledného XAML.

Další informace o tom, jak používat XamlServices, naleznete v tématu XAMLServices třída a základní čtení XAML nebo zápis.

Systém typů XAML

Systém typů XAML poskytuje rozhraní API, která jsou nutná pro práci s daným individuálním uzlem datového proudu uzlu XAML.

XamlType je reprezentace objektu – to, co zpracováváte mezi počátečním uzlem objektu a koncovým uzlem objektu.

XamlMember je reprezentace člena objektu – to, co zpracováváte mezi počátečním členským uzlem a koncovým uzlem.

Rozhraní API, jako jsou GetAllMembers a GetMember a DeclaringType, hlásí vztahy mezi XamlType a XamlMember.

Výchozí chování systému typů XAML implementovaného službou .NET XAML Services je založené na modulu CLR (Common Language Runtime) a statické analýze typů CLR v sestaveních pomocí reflexe. Proto pro konkrétní typ CLR může výchozí implementace systému typů XAML zveřejnit schéma XAML tohoto typu a jeho členů a hlásit ho z hlediska systému typů XAML. Ve výchozím systému typů XAML se koncept přiřazování typů mapuje na dědičnost CLR a koncepty instancí, typů hodnot atd., jsou také mapovány na podpůrné chování a funkce CLR.

Referenční informace o funkcích jazyka XAML

Pro podporu XAML poskytuje služba .NET XAML Services konkrétní implementaci konceptů jazyka XAML definovaných pro obor názvů XAML jazyka XAML. Tyto stránky jsou dokumentovány jako konkrétní referenční stránky. Jazykové funkce jsou zdokumentovány z pohledu chování těchto jazykových funkcí při jejich zpracování čtečkou XAML nebo zapisovačem XAML definovaným službami .NET XAML. Další informace naleznete v tématu Funkce jazyka XAML (x:) funkce jazyka.