Sdílet prostřednictvím


XAML Services

Toto téma popisuje schopnosti sady technologií označované jako služby .NET XAML. Většina popisovaných služeb a rozhraní API se nachází v sestavení System.Xaml. Služby zahrnují čtečky a zapisovače, třídy a podporu schémat, továrny, přiřazování tříd, vnitřní podporu jazyka XAML a další funkce jazyka XAML.

O této dokumentaci

V rámci konceptuální dokumentace ke službám .NET XAML se předpokládá, že máte předchozí zkušenosti s jazykem XAML a s jeho použitím v konkrétní architektuře, například WPF (Windows Presentation Foundation) nebo Windows Workflow Foundation (WWF), nebo s konkrétní oblastí technologických funkcí, například s funkcemi přizpůsobení sestavení v Microsoft.Build.Framework.XamlTypes. Tato dokumentace se nesnaží vysvětlit základy XAML jako značkovacího jazyka, terminologii syntaxe XAML ani další úvodní informace. Místo toho se zaměřuje na konkrétní použití služeb .NET XAML, které jsou povoleny v knihovně sestavení System.Xaml. Většina těchto rozhraní API je určena pro scénáře integrace a rozšiřitelnosti jazyka XAML. To může zahrnovat některý z následujících scénářů:

  • Rozšíření schopností základních čteček XAML nebo zapisovačů XAML (přímé zpracování streamu uzlů XAML; odvození vaší vlastní čtečky XAML nebo zapisovače XAML).

  • Definování vlastních typů použitelných v rámci XAML, které nemají specifické závislosti na architektuře, a přiřazení typů, které předávají vlastnosti systému typů XAML službám .NET XAML.

  • Hostování čteček XAML nebo zapisovačů XAML jako komponent aplikace, například vizuálního designera nebo interaktivního editoru pro zdroje XAML kódu.

  • 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 zdroje pomocných typů; použití technik vyhledávání známých typů namísto neustálého reflektování sestavení; použití konceptů načtených sestavení, které nepoužívají modul CLR (Common Language Runtime) AppDomain a s ním spojený model zabezpečení).

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

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

Pokud hledáte úvodní materiály k XAML jako jazyka, můžete se zkusit podívat na přehled XAML (WPF .NET). Toto téma je věnováno jazyku XAML pro uživatele, kteří se teprve seznamují s WPF (Windows Presentation Foundation) a také s používáním XAML kódu a funkcí jazyka XAML. Dalším užitečným dokumentem je úvodní materiál ve specifikaci jazyka XAML.

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

Služby .NET XAML a System.Xaml sestavení definují většinu toho, co je potřeba pro podporu funkcí jazyka XAML. To zahrnuje základní třídy pro čtečky XAML a zapisovače XAML. Nejdůležitější funkcí přidanou do služeb .NET XAML, která nebyla k dispozici v žádné z implementací XAML specifických pro danou architekturu, je reprezentace systému typů pro XAML. Reprezentace systému typů reprezentuje XAML objektově orientovaným způsobem, který se soustředí na schopnosti XAML bez závislostí na konkrétních schopnostech architektur.

Systém typů XAML není omezen formou kódu ani run-time specifiky původu XAML; není omezen ani žádným specifickým systémem pomocných typů. Systém typů jazyka XAML zahrnuje objektovou reprezentaci typů, členů, kontextů schémat XAML, konceptů na úrovni XML a dalších konceptů jazyka XAML nebo vnitřních funkcí jazyka XAML. Používání nebo rozšiřování systému typů XAML umožňuje odvozování od tříd, jako jsou čtečky XAML a zapisovače XAML, a rozšiřování funkcí reprezentací XAML do specifických funkcí, které umožňuje architektura, technologie nebo aplikace, která využívá nebo generuje XAML. Koncept kontextu schémat XAML umožňuje praktické operace zápisu grafu objektů z kombinace implementace zapisovače objektů XAML, systému pomocných typů technologie komunikovaného prostřednictvím informací o sestavení v daném kontextu a zdroje uzlů XAML. Další informace o konceptu schématu XAML. viz Výchozí kontext schématu XAML a kontext WPF schématu XAML.

Streamy uzlů XAML, čtečky XAML a zapisovače XAML

Pro pochopení úlohy, kterou služby .NET XAML hrají ve vztahu mezi jazykem XAML a konkrétními technologiemi, které používají XAML jako jazyk, je užitečné porozumět konceptu streamu uzlů XAML a tomu, jak tento koncept definuje rozhraní API a terminologii. Stream uzlů XAML je konceptuální mezičlánek mezi reprezentací jazyka XAML a grafem objektů, který jazyk XAML reprezentuje nebo definuje.

  • Čtečka XAML je entita, která v určité formě zpracovává XAML a vytváří stream uzlů XAML. V rozhraní API je čtečka XAML reprezentována základní třídou XamlReader.

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

    Dvěma nejběžnějšími scénáři zahrnujícími XAML je načtení XAML za účelem vytvoření instance grafu objektů a uložení grafu objektů z aplikace nebo nástroje a vytvoření reprezentace XAML (obvykle ve formě kódu uloženého v podobě textového souboru). Načítání XAML a vytváření grafu objektů se v této dokumentaci často označuje jako cesta načítání. Uložení nebo serializace existujícího grafu objektů do XAML se v této dokumentaci často označuje jako cesta ukládání.

    Nejběžnější typ cesty načítání lze popsat následovně:

  • Začněte s reprezentací XAML ve formátu XML s kódováním UTF a uložte ji do textového souboru.

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

  • Výsledkem je stream uzlů XAML. K jednotlivým uzlům streamu uzlů XAML můžete přistupovat pomocí rozhraní API XamlXmlReader / XamlReader. Nejtypičtější operací je procházení streamu uzlů XAML a zpracování každého uzlu pomocí metafory „aktuálního záznamu“.

  • Výsledné uzly ze streamu uzlů XAML předáte rozhraní API XamlObjectWriter. XamlObjectWriter je podtřída XamlWriter.

  • XamlObjectWriter zapisuje graf objektů po jednom objektu v souladu s postupem přes zdrojový stream uzlů XAML. Zápis objektů se provádí pomocí implementace a kontextu schémat XAML, které umožňují přístup k sestavením a typům architektury a systému pomocných typů.

  • Na konci streamu uzlů XAML se volá Result pro získání kořenového objektu grafu objektů.

    Nejběžnější typ cesty ukládání lze popsat následovně:

  • Začnete s grafem objektů celé doby běhu aplikace, s obsahem uživatelského rozhraní a stavem doby běhu nebo s menším segmentem celkové reprezentace objektů aplikace za běhu.

  • Z logického počátečního objektu, například kořene aplikace nebo kořene dokumentu, načtete objekty do XamlObjectReader. XamlObjectReader je podtřída XamlReader.

  • Výsledkem je stream uzlů XAML. K jednotlivým uzlům streamu uzlů XAML můžete přistupovat pomocí rozhraní API XamlObjectReader a XamlReader. Nejtypičtější operací je procházení streamu uzlů XAML a zpracování každého uzlu pomocí metafory „aktuálního záznamu“.

  • Výsledné uzly ze streamu uzlů XAML předáte rozhraní API XamlXmlWriter. XamlXmlWriter je podtřída XamlWriter.

  • XamlXmlWriter zapisuje XAML kód v kódování XML UTF. Můžete ho uložit jako textový soubor, jako stream nebo v jiné podobě.

  • Zavoláním Flush získáte konečný výstup.

Další informace o konceptech streamu uzlů XAML najdete v tématu Principy struktur a koncepcí streamů uzlů XAML.

XamlServices – třída

Není vždy nutné pracovat se streamem uzlů XAML. Pokud chcete používat základní cestu načítání nebo základní cestu ukládání, můžete použít rozhraní API ve třídě XamlServices.

  • Cestu načítání implementují různé signatury Load. Můžete buď načíst soubor, nebo stream, případně můžete načíst XmlReader, TextReader nebo XamlReader, které zabalí váš vstup XAML načtením pomocí rozhraní API dané čtečky.

  • Různé signatury Save uloží graf objektů a vytvoří výstup ve formě streamu, souboru nebo instance XmlWriter/TextWriter.

  • Transform převede XAML propojením cesty načítání a cesty ukládání do jedné operace. Pro XamlReader a XamlWriter je možné použít jiný kontext schémat nebo jiný systém pomocných typů, což ovlivňuje způsob transformace výsledného XAML.

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

XAML – systém typů

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

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

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

Rozhraní API, jako jsou GetAllMembers, GetMember a DeclaringType reportují relace mezi XamlType a XamlMember.

Výchozí chování systému typů XAML implementovaného službami .NET XAML je založeno na modulu CLR (Common Language Runtime) a statické analýze typů CLR v sestaveních pomocí reflexe. Proto může výchozí implementace systému typů XAML pro určitý typ CLR vystavit schéma XAML daného typu a jeho členy a reportovat ho z hlediska systému typů XAML. Ve výchozím systému typů XAML je koncept přiřaditelnosti typů mapován na dědičnost CLR a koncepty instancí, hodnotových typů atd. jsou rovněž mapovány na podpůrné chování a funkce CLR.

Referenční informace k funkcím jazyka XAML

Pro podporu jazyka XAML poskytují služby .NET XAML specifickou implementaci konceptů jazyka XAML definovaných pro názvový prostor XAML. Ty jsou zdokumentovány jako specifické referenční stránky. Funkce jazyka jsou dokumentovány z hlediska toho, jak se tyto funkce jazyka chovají při zpracování čtečkou XAML nebo zapisovačem XAML, které jsou definovány službami .NET XAML. Další informace najdete v tématu Jazykové funkce oboru názvů jazyka XAML (x:).